AWS認定SAPの執筆開始にあたって環境を構築しました
2021/04/11
AWS認定ソリューションアーキテクトプロフェッショナル対策本の執筆開始にあたりまして、執筆環境を構築しました。
個別には過去のブログに書いてますが、改めてまとめておきます。
年に1回か2回しか行わない作業ですし、次回にはやり方を変えるかもしれませんので、自動化はしません。
- AWS Code Commitをプライベートリポジトリとして使う
- 執筆環境(PyCharm, CodeCommit, CodePipeline, S3, Lambda, 署名付きURL)
- AWS CodeCommitのリポジトリをiPhoneのWorkingCopyアプリから使う
- iPad ProのWorking CopyでAWS CodeCommitのリポジトリを使う
目次
AWS CodeCommitのリポジトリ
AWS CodeCommitで新規のリポジトリを作成しました。
このアカウントは執筆の際にいつも使っているアカウントですので、AWS Code Commitをプライベートリポジトリとして使うに記載のIAMユーザーの[AWS CodeCommitのSSHキー]はすでにセットアップ済です。
AWS CodePipelineの作成
新規のパイプラインを作成しました。
パイプライン名を指定して、IAMロールは別の本のときに作成したものを使用しました。
原稿のZipファイルの保存先は、他の本と同じS3バケットにしました。
ソースでCodeCommitのリポジトリを選択して、パイプラインのトリガーはCloudWatch Events、出力アーティファクトの形式はgitメタデータを含まないZipファイルにしました。
ビルドステージはスキップしました。
誤字脱字の自動チェックとかビルドステージで追加したいですね。
そのうちトライしてみます。
デプロイステージはAmazon S3にして、既存のバケット、オブジェクトキーを指定しました。
CloudWatch Eventsにルールが作成されていました。
AWS Lambdaのトリガー追加
LamndaのIAMロールとは別に署名付きURL作成用のIAMユーザーを作ってアクセスキーを発行しています。
理由は署名付きURLの有効期限を一週間にしたいためです。
IAMロールの場合は有効期限がLamnda関数のインスタンスが起動した際の認証情報が有効な期間のみとなり一週間もちません。
- 署名付きURL作成用IAMユーザーのIAMポリシー
追加したアーティファクトのオブエジェクトキーのプレフィックスを追加しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::writing-y/aws-linux/*", "arn:aws:s3:::writing-y/aws-developer-as/*", "arn:aws:s3:::writing-y/aws-atuomation-python/*", "arn:aws:s3:::writing-y/aws-sap/*" ] } ] } |
- AWS Lambdaのコード
追加変更はありません。
署名付きURL作成用のIAMユーザーのアクセスキーは環境変数を使っています。
これは、SecretsManagerでローテーション付きで保護したほうがいいですね。
そのうち改善します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import json import urllib import boto3 import os accesskey = os.environ.get('accesskey', '') secret = os.environ.get('secret', '') s3_client = boto3.client( 's3', aws_access_key_id=accesskey, aws_secret_access_key=secret ) def lambda_handler(event, context): print(event) bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key']) presigned_url = s3_client.generate_presigned_url( ClientMethod = 'get_object', Params = { 'Bucket' : bucket, 'Key' : key }, ExpiresIn = 604800, HttpMethod = 'GET' ) sns = boto3.client('sns') topic = 'yamashita-mail' snsTopicArn = [t['TopicArn'] for t in sns.list_topics()['Topics'] if t['TopicArn'].lower().endswith(':' + topic.lower())][0] sns.publish( TopicArn=snsTopicArn, Message=presigned_url, Subject='aws-linux presinedurl', MessageStructure='raw' ) print(presigned_url) |
- S3トリガー
トリガーはプレフィックス単位にしていますので追加しました。
Mac、WorkingCopy(iPhone, iPad)にクローン
PyCharmをインストールしているMacでは次のコマンドを実行。
1 2 |
git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/aws-sap |
iPhone、iPadのWorkingCopyからは、アプリのClone機能を使いました。
URLは、ssh://SSHキーID@git-codecommit.リージョンコード.amazonaws.com/パス です。
例 ssh://APKAJMDDPOLPSL7OAYOA@git-codecommit.us-east-1.amazonaws.com/v1/repos/test
動作テスト
iPhoneから編集してコミット、プッシュして、パイプラインが起動して、署名付きURLが作成されることが確認できました。
さて、執筆がんばります。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Application Load Balancer スティッキーセッションでどれぐらい偏るかを偶然見ました
Amazon Linux2のPHPを7.2から7.3へアップデートしましたでアッ …
-
-
CloudFormationドリフト検出
CloudFormationスタックのドリフト検出を確認しました。 CloudF …
-
-
ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
試したい事があるのでAWS でとりあえずAmazon Linuxのサーバを作る
1年間の無料キャンペーン期間中に検証する とある勉強会でせっかくAWSのアカウン …
-
-
Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する
EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …
-
-
Amazon EC2のスクリーンショットとは
ドキュメント見てたらAmazon EC2でスクリーンショットって機能があったので …
-
-
AWS DeepLens開封の儀
去年(2019年)7月にamazon.co.jpでDeepLens買えますやんっ …
-
-
AWS CloudHSMを起動してみました
なかなか触る機会のないサービス、CloudHSM。 起動してみました。 手順はユ …
-
-
AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた
AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …
-
-
AWS VPC ネットワークACLでHTTP(80)のみ許可する
ユーザーガイドのカスタムネットワーク ACLのうち、HTTP(80)を許可する設 …