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) 的令牌獲取憑據(jù)
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 關注
- 150 瀏覽
添加回答
舉報