我们有一个全程使用Amazon S3的Web应用程序,为了便于维护,我们使用相应的存储桶权限等设置了不同的IAM用户。我们为此设置了凭据用户在为这样我们的Ruby /西纳特拉应用程序的初始化部分:覆盖AWS-SDK中的默认凭证
# MyS3UserIAM
Aws.config.update({
:region => 'us-east-1',
:credentials => Aws::Credentials.new(ENV['AWS_S3_KEY'],ENV['AWS_S3_SECRET'])
})
这个伟大的工程,因为我们可以实例S3通过我们的代码对象都无需重新指定每次凭据。
问题是,我们现在为我们网站的一个子部分添加了一个小例程,该子部分需要使用Amazon DynamoDB进行两次调用。我们已经成立了一个独立的IAM与权限DynamoDB表,我们正在创建的程序中的对象作为这样的:
# MyDynamoUserIAM
mydynamodb = Aws::DynamoDB::Client.new(
access_key_id: ENV['AWS_DYNAMO_KEY'],
secret_access_key: ENV['AWS_DYNAMO_SECRET']
)
的问题是,当我们试图让使用mydynamodb任何查询,我们发现访问失败,说MyS3UserIAM对我们的DynamoDB表没有权限。
(事实上,该错误是混乱的,因为错误信息给我们的错误字符串MyDynamoUserIAM ARN,但显示MyS3UserIAM作为IAM的名字!)
我本来以为指定在Aws::Object
实例化期间的凭据将覆盖Aws.config
设置,但似乎没有。有什么办法可以解决这个问题吗?