ElasticBeanstalk DescribeConfigurationSettings API 方法的访问被拒绝

Access Denied for ElasticBeanstalk DescribeConfigurationSettings API method

我尝试 运行 ElasticBeanstalk 的 DescribeConfigurationSettings API 方法如下:

AWSElasticBeanstalk ebs = AWSElasticBeanstalkClientBuilder.standard().withRegion(Regions.EU_CENTRAL_1).withCredentials(new AWSStaticCredentialsProvider(credentials)).build();
        for(ApplicationDescription ad : ebs.describeApplications().getApplications()){
            System.out.println(ad);
            for(EnvironmentDescription ed : ebs.describeEnvironments(new DescribeEnvironmentsRequest().withApplicationName(ad.getApplicationName())).getEnvironments()) {
                System.out.println(ebs.describeConfigurationSettings(new DescribeConfigurationSettingsRequest().withApplicationName(ad.getApplicationName()).withEnvironmentName(ed.getEnvironmentName())).getConfigurationSettings());

            }


        }

但是,我收到以下消息的拒绝访问异常:

Exception in thread "main" com.amazonaws.services.elasticbeanstalk.model.AWSElasticBeanstalkException: Access Denied: S3Bucket=elasticbeanstalk-env-resources-eu-central-1, S3Key=eb_patching_resources/instance_patch_extension.linux (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: NB44V0RXQG2WHH4T; Proxy: null) (Service: AWSElasticBeanstalk; Status Code: 400; Error Code: InvalidParameterValue; Request ID: b058aa54-fc9c-4879-9502-5cb5818bc64a; Proxy: null)

我该如何解决这个问题?

亚马逊推荐使用AWS SDK for Java V2

更新代码 这是此用例的 Java V2 代码。

 package com.aws.example;

   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.elasticbeanstalk.ElasticBeanstalkClient;
   import software.amazon.awssdk.services.elasticbeanstalk.model.*;
   import java.util.List;

    public class DescribeApplications {

    public static void main(String[] args) {

        Region region = Region.US_EAST_1;
        ElasticBeanstalkClient beanstalkClient = ElasticBeanstalkClient.builder()
                .region(region)
                .build();

        DescribeApplicationsResponse applicationsResponse = beanstalkClient.describeApplications();
        List<ApplicationDescription> apps = applicationsResponse.applications();
        for (ApplicationDescription app: apps) {
            System.out.println("The application name is "+app.applicationName());
            DescribeEnvironmentsRequest desRequest =  DescribeEnvironmentsRequest.builder()
                            .applicationName(app.applicationName())
                            .build();


            DescribeEnvironmentsResponse res = beanstalkClient.describeEnvironments(desRequest) ;
            List<EnvironmentDescription> envDesc = res.environments();
            for (EnvironmentDescription desc: envDesc) {
                System.out.println("The Environment ARN is "+desc.environmentArn());
            }

        }
    }
  }

此处输出:

根据您收到的错误,您似乎缺少某些 IAM 权限。我将从向您的用户添加 AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy 托管策略开始。

此策略可能比您实际需要的更宽松,但很难准确指出哪些权限是必需的。