尝试获取对象时 AWSIoT 访问被拒绝

问题描述 投票:0回答:1

我正在尝试创建 AWS IoT 作业,我已遵循此处的先决条件

创建 OTA 作业的 Lambda 具有所需的权限。
但是当我获得该作业的详细信息以了解为什么它尚未创建时。

我得到:

'Access denied when trying to get object. (Service: AWSIot; Status Code: 401; Error Code: UnauthorizedException; Request ID: 0d20d22e-9d19-46de-a5ba-9a0c02254ab7; Proxy: null)'

完整回复

aws iot get-ota-update

otaUpdateInfo:
  additionalParameters: {}
  awsJobExecutionsRolloutConfig: {}
  awsJobPresignedUrlConfig:
    expiresInSec: 1800
  creationDate: '2024-03-27T11:27:13.385000+05:30'
  description: 'Job Name: VarunJob_26-Mar-24#01'
  errorInfo:
    code: UnauthorizedException
    message: 'Access denied when trying to get object. (Service: AWSIot; Status Code:
      401; Error Code: UnauthorizedException; Request ID: 0d20d22e-9d19-46de-a5ba-9a0c02254ab7;
      Proxy: null)'
  lastModifiedDate: '2024-03-27T11:27:14.154000+05:30'
  otaUpdateArn: arn:aws:iot:us-east-1:account:otaupdate/Ai8JXbggPogk43KdUrEduY
  otaUpdateFiles:
  - codeSigning:
      dummySigningDetails
    fileLocation:
      s3Location:
        bucket: ota-account-dev
        key: users/user_id/firmwareimages/kjdfsjkdflkj/fdsjlkdsfkj.bin
  otaUpdateId: Ai8JXbggPogk43KdUrEduY
  otaUpdateStatus: CREATE_FAILED
  protocols:
  - MQTT
  - HTTP
  targetSelection: SNAPSHOT
  targets:
  - arn:aws:iot:us-east-1:account:thing/Ux96hQsNZWjqynXYD2zfvN

我唯一的猜测是 AWS IoT 无法解析其对该 S3 对象的访问。
我已授予在 IoT 服务角色中访问 S3 所需的权限:

Statement:
              - Effect: Allow
                Action:
                  - s3:GetObjectVersion
                  - s3:GetObject
                  - s3:PutObject
                Resource: !Sub
                  - arn:aws:s3:::${OtaImageBucket}/*
                  - OtaImageBucket: !ImportValue OTAFirmwareS3BucketArn

奇怪的是,这个错误发生在我的临时帐户上。
但它适用于我的开发帐户。我们使用 Cloudformation 来管理基础设施,因此我知道应该在两端部署相同的资源。

非常感谢任何帮助。

amazon-web-services amazon-s3 aws-iot aws-iot-core
1个回答
0
投票

没关系,事实证明我没有正确创建 S3 对象 ARN。
与:

Resource: !Sub
                  - arn:aws:s3:::${OtaImageBucket}/*
                  - OtaImageBucket: !ImportValue OTAFirmwareS3BucketArn

我的目标 ARN 出现了

arn:aws:s3:::
两次。

修复了这个问题并且成功了。

P.S 它在我的开发环境中工作的原因是该存储桶允许公共访问(可能是一些 POC)。

© www.soinside.com 2019 - 2024. All rights reserved.