ヤマムギ

growing hard days.

*

執筆環境(PyCharm, CodeCommit, CodePipeline, S3, Lambda, 署名付きURL)

      2020/01/09

2018年から、年に1回ぐらい商業本の執筆をさせていただいております。
2020年は薄い本にもチャレンジしたいです。

今利用している執筆環境を記録しておきます。
アーキテクチャはこちらです。

  • フォーマットはマークダウンです。
  • MacbookにインストールしたPyCharmで書いてコミットします。
  • リポジトリはCodeCommitです。
  • コミットされるとCodePipelineがzipにしてS3バケットに格納します。
  • S3バケットにzipが格納されるとLambdaが署名付きURLを生成してSNSトピックにパブリッシュします。
  • サブスクライバーのEメールに署名付きURLが送信されます。

CodePipeline

[パイプラインの作成]からはじめました。

パイプライン名を任意で設定しました。
IAMロールは新規で自動作成しました。
アーティファクトストアは、ダウンロード用ファイルが作成されるバケットを指定しました。

ソースは今回の書籍執筆用に作成していたCodeCommitのリポジトリ、ブランチを指定しました。
イベントはCloudWatch Eventsにしました。

ビルドステージはビルドステージをスキップから、スキップしました。

デプロイステージには、今回用に作成したバケットを指定しました。

以上で設定は完了しました。
内容を確認して作成完了しました。

CloudWatch Eventsを確認すると、ルールとイベントが作成されていました。

IAMロールは次のポリシーがアタッチされたロールが作成されていました。

信頼ポリシーはこちらでした。

署名付きURL生成

今回は、編集者さんにダウンロードしてもらうための署名付きURLを生成したいです。
有効期限としては、1週間欲しいです。
ですので、IAMロールを使用した場合は6時間なので、使用できません。
専用のIAMユーザーを作成しました。

Amazon S3 バケットの署名付き URL が、指定した有効期限より前に失効するのはなぜでしょうか?

IAMユーザーはマネジメントコンソールからログインする必要はありませんので、コンソールのパスワードは[無効]にしました。
ポリシーはインラインポリシーで、該当のS3オブジェクトキーに、GetObjectできるだけの権限です。
アクセスキーを発行しました。

SNSトピックを作成して、サブスクライバーには自分のEmailを設定しました。

Lambda

イベントトリガーはS3のプレフィックスとサフィックス指定で、イベントタイプはObjectCreatedです。
ランタイムはPython3.6です。

環境変数に、accesskeyとsecretを設定して完了です。

実行結果

Pycharmのターミナルからコミットしてみました。

CodePipelineが動き始めました。

成功で完了しました。

メールでもちゃんと署名付きURLが届きました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

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

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

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

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

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

 - AWS , , ,

  関連記事

Amazon Location Service入門ワークショップ-ルート計算

Amazon Location Service入門ワークショップのアプリで、ルー …

S3に置いたMP3ファイルをTwilioから電話再生する(AWS Lambda Python)

Google Calendar Twilio ReminderのTwilioを使 …

Amazon Linux にnodejsとmongoDBをインストールする

EPEL リポジトリを利用してnodejsとnpmをインストールする [bash …

Amazon Linux2のジャンボフレーム

ユーザーガイドのEC2 インスタンスのネットワークの最大送信単位 (MTU)を試 …

Amazon Glacierでボールトロックポリシーの作成開始をしてみました

Glacierを単体で使用することもそうそうないので、確認しました。 まずボール …

AWS EC2 Amazon Linuxにmauticをインストールする(Sendgrid, Nginx, MySQL on RDS)

mauticをAmazon LinuxとNginx,MySQL on RDSにイ …

AWS Managed Microsoft ADを構築してユーザー追加まで

事前準備 DNSホスト名と名前解決を有効にしたVPCを作成して、2つのAZにパブ …

EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた

きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …

AWS LambdaのSQSへの自前ポーリングをやめてSQSイベントソーストリガーに変更した

以前は、LambdaがSQSからメッセージを受信するには、キューをポーリングして …

AWS Client VPNを設定しました

ユーザーガイドのクライアント VPN の開始方法に沿ってやりました。 AWSクラ …