AWSでS3のWebサイトホスティングを運用している場合、毎回aws s3コマンドを使ったり、手動でアップロードするにはなかなかの手間です。今回はCircleCIのOrbsである circleci/aws-s3 を使って、Masterマージ後にS3バケットへSyncされるように、さくっと実装してみました。


■circleci/aws-s3@1.0.16

https://circleci.com/orbs/registry/orb/circleci/aws-s3

  • 構成

このドキュメント通りに作ればOKで構成は非常に簡単なので、あえて説明はしません!と言いたいところですが、以下!

  • Masterマージ
  • CircleCIのコンテナが立ち上がる
  •  aws s3 sync でdocsディレクトリ配下を adachin.jp/docs バケットにアップロード

■Setting IAM policy and user

まずは adachin.jp バケットのみアクセスできるようにポリシーを作って、クレデンシャルを取得するためにユーザーを紐付けましょう。ここらへん雑にしてると危険ですからね…

  • policy

s3-access-adachin.jp

  • IAM user

s3-adachin.jp: s3-access-adachin.jpをアタッチして、クレデンシャルをメモりましょう。

  • 確認

これで他のバケットには閲覧できないのでOK。


■CircleCI

  • Environment Variables

AWS_ACCESS_KEY_ID:xxxxxxxxxxxx
AWS_REGION:ap-northeast-1
AWS_SECRET_ACCESS_KEY:xxxxxxxxxxx

上記をCircleCIの環境変数に追加しましょう。

  • .circleci/config.yml

17行目のaws s3 syncのオプションで --delete を指定していますが、GitHubで管理されているソースコードとまったく同じにしたく、ソースに存在しないファイルをバケットから削除したいという理由です。そのままsyncすると不要なファイルが残ってしまうので追記しました。18行目from ですが、これは実際のソースコードのディレクトリを指しています。 あとはworkflowsでブランチをmasterにすれば自動でソースがアップロードされます。

  • 確認

これでバケットにtestファイル作って、Githubから削除してもバケットから消えてればOK!


■まとめ

手動でやっている方!今すぐCircleCIで自動化しましょう!


カテゴリー: AWSCircleCI

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください