追記

雑記帳


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-11-29 (Tue) [長年日記]

[AWS] 12桁のアレの名称

AWSアカウントのアイデンティティは、12桁の数字で表すことができる。その名称は、AWSアカウント番号 *1 と言われたり、AWSアカウントIDと言われたりしていて、正式にはどう呼ぶべきなのか、判然としなかった。

しかし、ついに偶然にも、それについて言及しているドキュメントに遭遇してしまった。

aws_account_number は、ハイフンのない AWS アカウント ID です。たとえば、AWS アカウント ID が 1234-5678-9012 の場合、AWS アカウント番号は 123456789012 です。

[ステップ 1.1: AWS アカウントを設定して管理ユーザーを作成する - AWS Lambdaより引用]

ハイフンの有無で違うのかー。これは知らなかった。

とはいえ、AWSのドキュメントでも、この辺りの表記については統一性が見られないので、本当にそういうルールなのかは謎である。

*1 初期の頃は、AWS口座番号と訳されていることがあった。例えば、これ

[AWS] IAMUserChangePassword

IAM の Managed Policy で、IAMUserChangePassword と言うのが増えていた。IAM User が AWS Management Console で自分のパスワードを変更できる権限を付与する。これまでは、自分で Policy を書かないといけなかったので、便利になった。

下記がその Policy なのだが、iam:ChangePassword API の対象として、自分自身の IAM User のみにしているのは、これまでやっていなかった。もしかして、他のユーザーのパスワードを変更できていたのかもしれないと思った(実際のところはは知らない)。

 {
     "Version": "2012-10-17",
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "iam:ChangePassword"
             ],
             "Resource": [
                 "arn:aws:iam::*:user/${aws:username}"
             ]
         },
         {
             "Effect": "Allow",
             "Action": [
                 "iam:GetAccountPasswordPolicy"
             ],
             "Resource": "*"
         }
     ]
 }

2016-04-08 (Fri) [長年日記]

[AWS] AWS CLIで任意のタグが設定されていないインスタンスの一覧を取る

例えば、Nameタグが設定されていないEC2インスタンスのInstanceId一覧を取るには、下記のようにする。

aws ec2 describe-instances --query 'Reservations[].Instances[?!contains(Tags[].Key, `Name`)].InstanceId|[]'

これで、AWS Management Consoleの「タグ付けなし」と同じ結果が得られる。