雑記帳
2016-12-06 (Tue) [長年日記]
■ [AWS] Lambdaで自身の実行されているリージョンを取得する
nodejsのAWS Lambdaで、Functionが実行されているリージョンが知りたいと思ったので調べてみた。
どうやら、直接的にリージョンを取得する方法はなさそうだったが、contextにinvokedFunctionArnがあったので、そこから取得できた。ARNが取れればなんとかなるパターン。
var region = context.invokedFunctionArn.match(/arn:aws:lambda:([^:]*):/)[1];
【追記】あとで教えてもらったところによると、環境変数として取得できるようだ。
process.env.AWS_REGION
しかし、AWSのドキュメントを探しても記載がなかったので、自分は見つけられなかったな。
2016-12-15 (Thu) [長年日記]
■ [AWS] CloudTrail用のS3 Bucket Policyの設定(全リージョン対応版)
以前に、CloudTrailのログを受け取るのに、S3 Bucket Policyでリージョンごとに設定を追加する方法を書いた。
Central regionやLondon regionが追加されたということで、また更新しないといけないかと思ったら、いつの間にか、今後登場するものも含めて、全てのリージョンに対応する方法が案内されていた。
つまり、下記のようなPolicyを適用すれば良いようだ。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::myBucketName" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/AWSLogs/myAccountID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
myBucketName, optional prefix, myAccountID を書き換える。複数のアカウントから受ける場合は、myAccountIDはワイルドカード '*' にできる。
2016-12-21 (Wed) [長年日記]
■ [git] stageしてcommitする前に消してしまったファイルを復活させる
作業中に、誤って必要なファイルを消してしまった。不要なファイルをgit rmしようとして、ついうっかり別の必要なファイルをgit rmしてしまった。しかも、そのファイルは新規の未コミットで、git addを使ってstageした状態のファイルだった。実際に削除する前に警告が出たものの、気がつかずに消してしまった後に気がついて、慌ててしまった。
しかし、幸いgit addしていたため、objectとしては残っているはずと思って、探そうと思った。そして見つけたのがこれ。
利用したのは、resolvedされている長い方の回答ではなく、もう一つの方。下記のようなスクリプトが書いてある。
for b in $(git fsck --lost-found | grep blob | awk '{print $3}'); do git cat-file -p $b | grep -q ${UNIQUE_CODE} && echo $b; done
これは、git fcsk --lost-foundを使って、commitからは辿れないオブジェクトを探す。それらをgit cat-fileして、UNIQUE_CODE に指定した、探しているコードに含まれているはずのテキストをgrepするというもの。
このコードを使って、消してしまったobjectのhash値が得られるので、git cat-file -p <hash> を実行して、中身を取り出すことができる。これで取り戻すことができた。
こういうことができるのが、gitのいいところである。