1 回答
TA贡献2041条经验 获得超4个赞
好的,假设您有一个允许 ec2 实例访问 s3 存储桶的角色(我们称之为 EC2S3AccessRole),您需要遵循此文档:https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ instancedata-data-retrieval.html
例如,在我的情况下(golang),我会做这样的事情:
一种。获取令牌:
cmd := exec.Command("bash", "-c", `curl -X PUT http://169.254.169.254/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 600"`)
b. 使用来自 (a) 的令牌获取凭据
type IAMSecurityCreds struct {
Code string `json:"Code"`
LastUpdated time.Time `json:"LastUpdated"`
Type string `json:"Type"`
AccessKeyID string `json:"AccessKeyId"`
SecretAccessKey string `json:"SecretAccessKey"`
Token string `json:"Token"`
Expiration time.Time `json:"Expiration"`
}
...
cmd := exec.Command("bash", "-c", `curl -H "X-aws-ec2-metadata-token: `+token+`" -v http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2S3AccessRole`)
...
json.Unmarshal into IAMSecurityCreds
C。一旦你拥有所有三个(令牌、密钥、秘密),你就可以运行这样的东西:
cmd := exec.Command("bash", "-c", `AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=` + creds.AccessKeyID + ` AWS_SECRET_ACCESS_KEY=` + creds.SecretAccessKey + ` AWS_SESSION_TOKEN="` + creds.Token + `" aws s3 ........`)
而已 :)
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报