【问题标题】:aws cost and usage report throws s3 permission erroraws 成本和使用情况报告引发 s3 权限错误
【发布时间】:2018-09-23 16:26:35
【问题描述】:

我正在尝试通过 Java SDK 生成 AWS 成本和使用情况报告。下面是我的代码块。

        credentials = new ProfileCredentialsProvider("default").getCredentials();
   AWSCostAndUsageReportClientBuilder reportBuilder = AWSCostAndUsageReportClientBuilder.standard();

   AWSCostAndUsageReportClient costAndUsageReport =  (AWSCostAndUsageReportClient) reportBuilder
           .withCredentials(new AWSStaticCredentialsProvider(credentials))
           .withRegion("us-east-1")
           .build();

   ReportDefinition reptDefinition = new ReportDefinition();

   reptDefinition.setReportName("ChandraReport123");
   reptDefinition.setTimeUnit("DAILY");
   reptDefinition.setCompression("ZIP");
   ArrayList addidtionSchemaElements = new ArrayList();
   addidtionSchemaElements.add("RESOURCES");
   reptDefinition.setAdditionalSchemaElements(addidtionSchemaElements);
   reptDefinition.setS3Bucket("etho-onnu22");
   reptDefinition.setS3Prefix("someprefix");
   reptDefinition.setS3Region("us-east-1");
   reptDefinition.setFormat("textORcsv");
   request.setReportDefinition(reptDefinition);

   PutReportDefinitionResult reportResult = costAndUsageReport.putReportDefinition(request);

执行代码时遇到异常 -

线程“main”中的异常 com.amazonaws.services.costandusagereport.model.ValidationException: 未能验证客户存储桶权限。 accountId= xxxxxxx72184, 存储桶名称:etho-onnu22,存储桶区域:us-east-1(服务: AWSCostAndUsageReport;状态码:400;错误代码: 验证异常;请求 ID: xxxxxxx) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1630) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1302) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)

我能够通过 s3 api 将对象上传到同一个 s3 文件夹。非常感谢任何帮助或指针。谢谢

【问题讨论】:

  • 发布您如何上传到 s3 存储桶的完整命令。另外,您在运行上述代码时是否检查了该区域?
  • AWS costAndUSageReport api 将生成报告并将其上传到指定的 s3 存储桶。

标签: amazon-web-services amazon-s3 sdk cloud


【解决方案1】:

AWS 账户 386209384616(这是一个静态常量,AWS 始终用于传递这些报告的帐号)必须有权通过存储桶策略写入存储桶。

请参阅 AWS 账单和成本管理中的 Getting Started, Step 2 用户指南(2.0 版)。此处提供了一个示例存储桶策略。您应该将该策略中的存储桶名称更改为您的存储桶,但不要更改帐号。总是386209384616

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多