gpt4 book ai didi

amazon-web-services - 如何使用IAM角色通过临时凭证访问资源?

转载 作者:行者123 更新时间:2023-12-01 01:15:54 25 4
gpt4 key购买 nike

我使用的 AWS IAM 角色允许实例使用临时 API 凭证(访问 key 、 secret key 和安全 token )访问某些资源。

当我使用此 ruby​​ 脚本测试临时凭据时,它运行没有任何问题:

require 'rubygems'
require 'aws-sdk'
AWS.config(
:access_key_id => "MY ACCESS KEY GOES HERE",
:secret_access_key => "MY SECRET KEY GOES HERE",
:session_token => "MY TOKEN GOES HERE")
s3 = AWS::S3.new()
myfile = s3.buckets['My-Config'].objects["file.sh"]
File.open("/tmp/file.sh", "w") do |f|
f.write(myfile.read)
end

但是当使用命令行运行 cfn-describe-stacks 时出现错误:

export AWS_CREDENTIAL_FILE=aws_credentials.cfg
cfn-describe-stacks
cfn-describe-stacks: Refused: The security token included in the request is invalid

这是我的 aws_credentials.cfg :

AWSAccessKeyId=MY ACCESS KEY
AWSSecretKey=My SECRET KEY
AWSToken="MY TOKEN=="

那么我在这里缺少什么?谢谢!

最佳答案

使用用户数据脚本很容易做到这一点。例如,此代码片段将获取您的临时凭证并从 S3 下载资源。我用它来进行 WAR 部署。

# Install updates and dependencies
yum -y install ruby-devel
yum -y install rubygems
yum install -y rubygem-nokogiri
gem install --no-rdoc --no-ri aws-sdk
gem install --no-rdoc --no-ri json

# Grab credentials and parse them
CREDENTIALS=$(curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access)
S3_ACCESS_KEY=$(echo $CREDENTIALS | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['AccessKeyId'];")
S3_SECRET_KEY=$(echo $CREDENTIALS | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['SecretAccessKey'];")
S3_TOKEN=$(echo $CREDENTIALS | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['Token'];")

# Download myFile
cat << EOF > /etc/getFile.rb
require 'rubygems'
require 'aws-sdk'
AWS.config(
:access_key_id => "$S3_ACCESS_KEY",
:secret_access_key => "$S3_SECRET_KEY",
:session_token => "$S3_TOKEN")
s3 = AWS::S3.new()
myfile = s3.buckets['mybucket'].objects["myFile"]
File.open("myLocalFile", "w") do |f|
f.write(myfile.read)
end
EOF

ruby /etc/getFile.rb

将其放入您的 CloudFormation 模板中并适当记录。它会像魅力一样发挥作用。您可以使用instance profiles使用 LaunchConfigs 和 EC2 resources没问题。我对此百分百有信心。当 AWS 的文档人员将这些引用添加到文档中时,它与 AWS 取得了联系。

关于amazon-web-services - 如何使用IAM角色通过临时凭证访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com