EC2に割り当てられたIAM Roleのcredential情報からAccessKeyId, SecretAccesskeyを取得するgulp task
EC2インスタンスに割り当てられたIAM Role権限で、EC2上でgulp.taskを動作させる場合の一時AccessKeyId, SecretAccessKeyの取得方法.
gulpの拡張タスクなどで、accessKeyId, SecretAccessKeyを指定するよう要求されるtaskがあります。IAM ユーザとしてアクセスキー等が発行されていない場合でも、EC2インスタンスに割り当てられたIAM Roleから一時アクセスキーを取得し、実行することができるようになります。
var AWS = require("aws-sdk");
gulp.task('updateCredentials', function() {
return new Promise((resolve, reject)=>{
var metadata = new AWS.MetadataService();
metadata.request('/latest/meta-data/iam/security-credentials/',function(err,rolename){
if(err) reject(err);
// console.log(rolename);
metadata.request('/latest/meta-data/iam/security-credentials/'+rolename,function(err,data) {
if(err) reject(err);
// console.log(data);
var credentials = JSON.parse(data);
AWS.config.update({
accessKey: credentials.AccessKeyId,
secretAccessKey: credentials.SecretAccessKey,
sessionToken: credentials.Token,
});
console.log('update credentials.');
resolve();
});
});
});
});
gulpで直せすaccessKeyId, SecretAccessKeyを参照する必要がない場合は、以下のような方法で
credentialsを更新します。
gulp.task('updateCredentialsEC2', function() {
AWS.config.credentials = new AWS.EC2MetadataCredentials({
// httpOptions: { timeout: 5000 }, // 5 second timeout
// maxRetries: 10, // retry 10 times
// retryDelayOptions: { base: 200 } // see AWS.Config for information
});
AWS.config.credentials.refresh(function() {
return Promise.resolve();
});
});
Author And Source
この問題について(EC2に割り当てられたIAM Roleのcredential情報からAccessKeyId, SecretAccesskeyを取得するgulp task), 我々は、より多くの情報をここで見つけました https://qiita.com/stoneriverheart/items/09c755ea9d1f390675a4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .