0

我创建了预签名 url 来使用 AssumeRoleCredentials 访问 S3 对象,如下所示。

client = Aws::AssumeRoleCredentials.new(role_arn: ENV['AWS_ROLE_ARN'],
                                                    role_session_name: "S3_Access",
                                                    duration_seconds: 3600)
aws_creds = client.credentials
post = Aws::S3::PresignedPost.new(aws_creds, S3_REGION, S3_BUCKET, {
        key: Rails.env + '/' + file_name,
        metadata: {
          'original-filename' => file_names
        }
      })

但是,当我尝试使用已签名的 url 上传文件时,它会抛出错误。

<Code>InvalidAccessKeyId
</Code>
<Message>
The AWS Access Key Id you provided does not exist in our records.
</Message>
<AWSAccessKeyId>A************S</AWSAccessKeyId>
<RequestId>***********</RequestId>
<HostId>**********************</HostId>
</Error>

即使我尝试使用 AssumeRoleWebIdentityCredentials,但没有区别。我可以使用临时凭证执行其他 S3 操作。但是通过预签名的 url 访问 s3 对象是行不通的。

4

0 回答 0