昔作ったAWS CodePipelineでGitHub接続エラー

CodePipelineのSourceステージでGitHubと接続する場合には現在「GitHub(バージョン1)」と「GitHub(バージョン2)」が存在する。
バージョン1の方は既に推奨されていない為今から接続する際はバージョン2を選択すると良い。

過去に作成したCodePipelineでバージョン1で認証していたところをバージョン2に変更しようとしたら接続エラーになった。

Additional Information: Unable to use Connection: arn:aws:codestar-connections(略). The provided role does not have sufficient permissions.

ドキュメントによると2019年12月18日より前に作ったCodePipelineの場合サービスロールにパーミッションを追加が必要あることが記載されていた。

If your CodePipeline service role was created before December 18, 2019, you might need to update its permissions to use codestar-connections:UseConnection for AWS CodeStar connections.

GitHub connections - AWS CodePipeline

CodePipeline作成時に指定するサービスロール(デフォルトだとAWSCodePipelineServiceRole-{region}-{Name})の許可ポリシーに追加してあげれば良い。

{
    "Effect": "Allow",
    "Action": [
        "codestar-connections:UseConnection"
    ],
    "Resource": "resource_ARN"
},
Identity and access management for AWS CodePipeline - AWS CodePipeline

映画「トップガン」見た

今週のハンガリー🇭🇺GPが終わるとF1も夏休みに入り土日に少し時間の余裕ができる。
この機会にこれまで追いかけて来れなかったコンテンツを追いかけることにした。
要するに夏休みの宿題。

媒体に問わずおすすめコンテンツを教えてもらった中で最初に見たのは映画「トップガン」。

もちろん初見で作品に対する知識はトム・クルーズが主演ということと戦闘機がテーマというくらい。

最新作「トップガン・マーヴェリック」が公開中だが、最新作を楽しむ為には「トップガン」の履修が必要とのこと。
「トップガン・マーヴェリック」の評判を目にすると好評のものが多かったし、なにより皆のトム・クルーズへの解像度の高い反応に驚いていた。

「トップガン」は現在プライム・ビデオで配信中。

感想など

トム・クルーズ演じるマーヴェリック。
結果は出すがルールは守らない。成績はクーガー、アイスマンに首位を譲り2位。
この2位というのがすごいいい味出している感じ。
グースとのコンビはとても好きだったのでグースの死については非常に悲しい。

父の死の真相がかなり重要な伏線だと思っていたら割とあっさり明かされる。

チャーリーとの恋愛については、言ってしまえば教師と生徒の恋愛なんで
戦闘機が主テーマのこの作品でそんなことするなんて思ってなかった。
チャーリーが惚れるまでのところもちょっと行間読まないと納得できないけど
細かいことはいいんだよ。という感じがする。

この作品憎たらしいやつが全然いない。有望株だったアイスマンも最後に寝返りやがって...

物語はマーヴェリックがトップガンの教官を目指すことを告げるところで幕を閉じる。

ここからはこの作品外の話になるが、
「トップガン・マーヴェリック」は36年振りの続編でトム・クルーズが続編制作権を持っていて
トム・クルーズが納得できる続編出せるタイミングで出した続編。

トム・クルーズがスターダムにのし上がったこの作品の制作権を
ずっと譲らなかったその事実だけでもうエモい。

そして教官になったマーヴェリックを主役にした物語。こんなの絶対面白いに決まってる!

ご時世を鑑みて今すぐ映画館に行って見ようとは思わないけどいずれは絶対「トップガン・マーヴェリック」見る!

その他

視聴したのは吹替版だったが吹替版が不評なことについてはある程度は同意するが見るのをやめようとまでは思わなかった。
ただ、明らかに浮いているのは事実だと思う。


Amazon CloudFrontでクライアントIPを確認する

Amazon CloudFront(以下CloudFront)を挟んだリクエストを行った場合は、
デフォルトの状態ではオリジンから見たクライアントの情報はCloudFrontの物になってしまいます。

オリジンが、クライアントの情報知るための方法としてCloudFrontはいくつか解決策を用意しています。

X-Forwarded-For(XFF)

XFFに関して詳しい説明は省きますが、基本的にはXFFヘッダに複数のIPアドレスが列挙されていて
そのうち先頭のIPアドレスがクライアントのものである可能性が高いです。

ただ、XFFはリクエストヘッダで任意の値を設定することが可能なので安易に信用することはできません。
信頼できるIPリストと照合するなどして精査を行わなければなりません。

CloudFront-Viewer-Address ヘッダ

CloudFrontのアップデートによって実装され、XFFヘッダの解析を行わなくてもクライアントIP及びポートがわかるようになりました。
IPアドレスとポートが連結した情報になるのでIPアドレスだけ利用する場合は前処理は必要になります。

CloudFront Functions

リクエストに True-Client-IP ヘッダーを追加する - Amazon CloudFront
CloudFront Functionsを使用することで独自ヘッダを追加し値としてクライアントIPをセットすることができます。