Как запустить AWSPricing client от AWSPricingClientBuilder последней версии SDK? - PullRequest
1 голос
/ 08 марта 2019

Моя задача - получить данные о ценах AWS Procuct, поэтому я делаю следующее:

  1. устанавливаем переменные среды (AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY) enter image description here

  2. заполнить pom.xml (в Eclipse) кодом:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-pricing</artifactId>
    <version>1.11.513</version>
</dependency>
затем я кодирую метод теста, как код:
public static void testDescribeServices() {
    System.out.println("\n\n begin ....");
    AWSPricing client = AWSPricingClientBuilder.standard().withRegion("us-east-1").build();
    System.out.println("step 0001");
    DescribeServicesRequest servicesRequest = new DescribeServicesRequest();
    servicesRequest.setServiceCode("AmazonEC2");
    DescribeServicesResult result = client.describeServices(servicesRequest);
    List<Service> serviceList = result.getServices();
}
запустите метод testDescribeServices (), сообщение на консоли будет таким: (я был разочарован)
begin ....
17:08:21.166 [main] DEBUG com.amazonaws.AmazonWebServiceClient - Internal logging successfully configured to commons logger: true
17:08:21.831 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Unable to load configuration from com.amazonaws.monitoring.EnvironmentVariableCsmConfigurationProvider@130d63be: Unable to load Client Side Monitoring configurations from environment variables!
17:08:21.831 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Unable to load configuration from com.amazonaws.monitoring.SystemPropertyCsmConfigurationProvider@42a48628: Unable to load Client Side Monitoring configurations from system properties variables!
17:08:21.831 [java-sdk-http-connection-reaper] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Closing connections idle longer than 60000 MILLISECONDS
17:08:21.839 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Unable to load configuration from com.amazonaws.monitoring.ProfileCsmConfigurationProvider@689604d9: The 'default' profile does not define all the required properties!
Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.client.AwsSyncClientParams.getAdvancedConfig()Lcom/amazonaws/client/builder/AdvancedConfig;
    at com.amazonaws.services.pricing.AWSPricingClient.<init>(AWSPricingClient.java:158)
    at com.amazonaws.services.pricing.AWSPricingClient.<init>(AWSPricingClient.java:142)
    at com.amazonaws.services.pricing.AWSPricingClientBuilder.build(AWSPricingClientBuilder.java:61)
    at com.amazonaws.services.pricing.AWSPricingClientBuilder.build(AWSPricingClientBuilder.java:27)
    at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
    at com.yunion.apps.metadata.TestAWSDemoAPI.testDescribeServices(TestAWSDemoAPI.java:31)
    at com.yunion.apps.metadata.TestAWSDemoAPI.main(TestAWSDemoAPI.java:26)

1 Ответ

0 голосов
/ 08 марта 2019

после попытки настройки я добился определенного прогресса, и новый метод:

public static void testDescribeServices(String accessKey, String secretKey) {
    BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(accessKey, secretKey);
    AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(basicAWSCredentials);
    AWSPricingClientBuilder builder = AWSPricingClientBuilder.standard();
    builder.setCredentials(credentialsProvider);
    builder.withRegion("us-east-1");
    CsmConfigurationProvider csmConfigurationProvider = new EnvironmentVariableCsmConfigurationProvider();
    builder.setClientSideMonitoringConfigurationProvider(csmConfigurationProvider);
    System.out.println("step 0001");
    AWSPricing awsPricing = builder.build();
    System.out.println("step 0002");
    DescribeServicesRequest servicesRequest = new DescribeServicesRequest();
    servicesRequest.setServiceCode("AmazonEC2");
    System.out.println("step 0003");
    DescribeServicesResult result = awsPricing.describeServices(servicesRequest);
    System.out.println("\n\n step 0004");
    List<Service> serviceList = result.getServices();
    System.out.println("\n\n step 0005");
}

Однако, результат

Exception in thread "main" com.amazonaws.services.pricing.model.AWSPricingException: User: arn:aws:iam::285906155448:user/dev1 is not authorized to perform: pricing:DescribeServices **(Service: AWSPricing; Status Code: 400; Error Code: AccessDeniedException; Request ID: 13155463-4198-11e9-8f92-f1f731c320f2)**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...