ヤマムギ

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が届きました。


最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE + 絶対圧センサーで遊ぼう!」ワークショップにいってきた

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE …

Amazon LinuxにRedmine 環境構築(エラーと対応をそのまま記載版)

Amazon Linuxにgit + Redmineの環境を構築してみます。 自 …

EC2 Auto Recovery機能を設定しておいた

以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …

RedmineをELB(ALB)でAutoScalingグループへ負荷分散

高可用なRedmineを作るためのELBの設定です。 目次 高可用なRedmin …

WordPressのwp-login.php , xmlrpc.phpへのアクセスをAWS WAFで接続元IPアドレスを制限する

AWS CloudWatch LogsエージェントでAmazon EC2上のNg …

API GatewayのアクセスログをCloudWatchに記録する

Amazon API GatewayのアクセスログをCloudWatchに記録で …

EC2のAMIとRDSのスナップショットを他のAWSアカウントに共有してブログサイトをAWSアカウント間で引っ越す

当ブログで使用しているEC2とRDSを環境の整理のため、他のAWSアカウントへ引 …

Amazon Rekognitionでイベント参加者の顔写真を解析して似ている人ランキングをその場で作る

2017/9/21に開催されたAWS Cloud Roadshow 2017 大 …

AlexaにAWSの最新Feedを読み上げてもらう(Lambda Python)

年末にAmazon Echo Dotを購入しましたので、練習がてらAlexaスキ …

Backlogの実績工数をAmazon QuickSightでの可視化 – 仕組み編

Backlogの実績工数をAmazon QuickSightで可視化してわかった …