6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AssumeRoleでAWSのS3アップロードをするコマンド

Last updated at Posted at 2016-08-25

はじめに

本稿ではAssumeRoleによる自動クレデンシャル取得を利用したS3アップロードの方法をご紹介します。

基本的には以下の記事の手法をコマンドに落とし込んだだけです。
(すべてを理解しているわけではないので無駄なコード等あるかもしれません!)

AWS CLIがAssumeRoleによる自動クレデンシャル取得とMFAに対応しました! | Developers.IO

Gulpを用いたS3アップロード

普段の業務で、サーバーサイドの動的な要素がないサイトの公開をする方法として、S3にまるまる一式アップロード、という方法を使うことがあります。

GulpでS3アップロードを実行する場合、以下の辺りのnpmが有名なものとして挙げられます。

gulp-awspublish
gulp-s3-upload

仕事でも、一時期前まではgulp-awspublishを利用していたのですが、
最近社内でのAWSの運用方針が変わり、
Node.jsで可能なACCESS KEYとSECRET ACCESS KEYだけで認証する方法が使えなくなってしまいました。

参考: AssumeRole が面倒な人向け簡易 shell script - Qiita

実装

冒頭で紹介したページでは、 ~/.aws/configrole_arn の記述をして、 aws --profile (プロフィール名) のようにオプションをつければ、Assume
Roleによる自動クレデンシャル取得でのawsコマンド実行が可能になります。

なお、awsのコマンドを事前にインストールする必要ありです。
aws cli install mac - Qiita

~/.aws/config
[profile sample-site]
# 111122223333
role_arn = arn:aws:iam::111122223333:role/role-name
source_profile = default
[default]
output = json
region = us-west-2
~/.aws/credentials
[default]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
aws --profile sample-site s3 sync ../../public s3://site.example.com/ --delete --acl public-read --cache-control 'no-cache'

これをNode.jsで実行するには、ルートディレクトリーで package.json に以下のような script を記述することで、 npm run publish というコマンドを叩けばS3にアップロードできます。

参考: aws s3へフォルダ毎でダウンロードとアップロードする方法| prophet STAFF BLOG
参考: AWS S3のCLI(コマンドラインインターフェース)を試してみる | もふもふ技術部

package.json
{
  "name": "sample-site",
  "version": "0.0.1",
  "description": "SAMPLE SITE",
  "main": "gulpfile.js",
  "engines": {
    "node": ">=5.0.0"
  },
  "scripts": {
    "start": "gulp",
    "serve": "gulp serve",
    "build": "gulp build",
    "publish": "aws --profile sample-site s3 sync ../../public s3://site.example.com/ --delete --acl public-read --cache-control 'no-cache'"
  },
  ...
}

最終的に、Gulpコマンドではないものの、Node.jsでS3アップロードすることができました。

6
7
1

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
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?