LoginSignup
1
1

More than 5 years have passed since last update.

EC2上でアタッチされたroleを使用してaws-cliを行う

Last updated at Posted at 2017-11-22

やりたいこと

  • EC2上で動くjenkinsでaws-cliを使う
  • EC2にアタッチされているroleを使う
  • Access KeyやSecret Keyは持たない
  • AWSのAPIを使って行う

実現方法

シェルファイルでAPIを叩き、
レスポンスを環境変数に入れて一時tokenを使えるようにする

credential.sh
# bin/bash

url=http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE_NAME
curl $url > credential.json
export AWS_ACCESS_KEY_ID=`cat credential.json | jq .AccessKeyId | tr -d \"`
export AWS_SECRET_ACCESS_KEY=`cat credential.json | jq .SecretAccessKey | tr -d \"`
export AWS_SESSION_TOKEN=`cat credential.json | jq .Token | tr -d \"`

ちなみにJenkinsfile

作ったlambda関数を自動的にS3に上げてくれるジョブです
lambdaを更新するコマンドでやらないとS3に上げるだけになっちゃうので要改良

Jenkinsfile
#!groovy
pipeline {
    agent any
    triggers {
        pollSCM('H/3 * * * 1-5')
    }
    //environment {}
    stages {
        stage('Develop') {
            when {
                branch 'PR-*'
            }
            steps {
                ansiColor('xterm') {
                    echo '<<< start develop >>>'
                    sh '''
                        source `pwd`/credential.sh
                        Lambdadir="`pwd`/Lambdafiles/*"
                        for filepath in $Lambdadir; do
                            dirname=`basename $filepath`
                            zip `pwd`/$dirname.zip $filepath/*
                            aws s3 cp `pwd`/$dirname.zip s3://BUCKET_NAME/
                            aws lambda update-function-code --function-name dev_$dirname --zip-file fileb://$dirname.zip
                        done
                    '''
                }
            }
        }
    }
}
folder構成
.
├── Jenkinsfile
├── Lambdafiles
│   └── MODULE1_NAME_FOLDER #中にlamda用の関数を入れておく
│   └── MODULE2_NAME_FOLDER #中にlamda用の関数を入れておく
├── README.md
└── credential.sh
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1