LoginSignup
23
12

More than 5 years have passed since last update.

AWS_REGIONとAWS_DEFAULT_REGION

Posted at

Lambdaでは、実行されるリージョンがAWS_REGIONという環境変数に入っていると、公式ドキュメントに書かれています。

Lambda環境変数.png

一方、AWS SDKではAWS_DEFAULT_REGIONという環境変数にリージョンを設定してくれると、~./aws/configよりも優先して読み込んでClientやResourceを作成します。

AWS_DEFAULT_REGIONの場合
import os
import boto3

os.environ['AWS_DEFAULT_REGION'] = 'ap-northeast-1'
dynamodb = boto3.resource('dynamodb')

AWS_REGIONだとエラーになります。

AWS_REGIONの場合
import os
import boto3

os.environ['AWS_REGION'] = 'ap-northeast-1'
dynamodb = boto3.resource('dynamodb')
コンソール出力
botocore.exceptions.NoRegionError: You must specify a region.

でも、LambdaでClientやResourceを作成する時にリージョンを指定しなくてもエラーにはなりませんよね。何故か?

lambda_function.py
import os
import boto3

def lambda_handler(event, context):
    print('AWS_REGION = {}'.format(os.getenv('AWS_REGION')))
    print('AWS_DEFAULT_REGION = {}'.format(os.getenv('AWS_DEFAULT_REGION')))
ログ出力
AWS_REGION = ap-northeast-1
AWS_DEFAULT_REGION = ap-northeast-1

実はAWS_DEFAULT_REGIONにもリージョンが入っているようです。なーんだ!

23
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
12