ヤマムギ

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 クラウドプラクティショナー」という本を書きました。

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

 - AWS , , ,

ad

ad

  関連記事

「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた

サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …

LINE Bot APIのファーストステップをLambda+API Gatewayでやってみたらものすごく簡単で驚いた

トライアル当初はホワイトリストのしばりや、初回反応するまで時間がかかったりとみな …

AWS OrganizationsでAWSアカウントを25作りたいのでPythonで作った

AWSアカウントを25作る必要があったので、Lambda Python 3.7で …

AWS CDK とにかくサンプルでやってみる

Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …

VPC環境でLambdaを100同時実行してプライベートIPアドレスを確認した

2019年9月発表のLambda 関数が VPC 環境で改善されます以降に、VP …

API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート

SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …

GoogleフォームからAPI Gatewayで作成したREST APIにPOSTリクエストする

「API GatewayからLambdaを介さずにSNSトピックへ送信」の続きで …

AWS Lambda(Python)からTwitterに投稿する

「GoogleフォームからAPI Gatewayで作成したREST APIにPO …

ALBにWAFを関連付けて特定のヘッダー以外はブロックする

おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …

CUSTOMINEを使ってkintoneからAWS Lambdaを実行する(Cognito認証付き)

先日の記事「kintoneのカスタマイズ開発を超速にするCUSTOMINE」で書 …