メニュー
AWS Lambda
開発者ガイド

バージョニング、エイリアス、リソースポリシー

バージョニングとエイリアスを使用すると、さまざまな ARN を使用して Lambda 関数にアクセスできます。たとえば、次のシナリオを考えてみます。

たとえば、以下の 2 つの ARN のいずれかを使用して helloworld 関数のバージョン 1 を呼び出すことができます。

  • 修飾関数 ARN の使用:

    Copy
    arn:aws:lambda:aws-region:acct-id:function:helloworld:1

    注記

    非修飾関数 ARN (バージョンまたはエイリアスのサフィックスがない関数 ARN) は、$LATEST バージョンにマッピングされます。

  • BETA エイリアス ARN の使用:

    Copy
    arn:aws:lambda:aws-region:acct-id:function:helloworld:BETA

プッシュモデルでは、イベントソース (Amazon S3 やカスタムアプリケーション) は、Lambda 関数に関連付けられたアクセスポリシーを使用して必要なアクセス権限を付与されてさえいれば、Lambda 関数のどのバージョンでも呼び出すことができます。プッシュモデルの詳細については、「イベントソースマッピング」を参照してください。

アクセス権限を付与したとして、次の問題は、「イベントソースが、関連付けられた ARN を使用して関数バージョンを呼び出すことができるか」です。答えは、アクセス権限の追加リクエスト内での関数の識別方法によって異なります (「AddPermission」を参照)。これを理解するために重要なことは、付与されたアクセス権限は、アクセス権限の追加リクエストで使用された ARN にのみ適用されるということです。

  • 修飾関数名 (helloworld:1など) を使用した場合、アクセス権限はその修飾 ARN を使用した helloworld 関数のバージョン 1 の呼び出しのみに有効です (他の ARN を使用するとアクセス権限エラーになります)。

  • エイリアス名 (helloworld:BETA など) を使用した場合は、アクセス権限は BETA エイリアス ARN を使用した helloworld 関数の呼び出しのみに有効です (エイリアスが指す関数バージョン ARN を含む他の ARN を使用するとアクセス権限エラーになります)。

  • 非修飾関数名 (helloworld など) を使用した場合は、アクセス権限は非修飾関数 ARN を使用した helloworld 関数の呼び出しのみに有効です (他の ARN を使用するとアクセス権限エラーになります)。

    注記

    アクセスポリシーは非修飾 ARN のみであっても、呼びだされた Lambda 関数のコードと設定はやはり関数バージョン $LATEST からのものであることに注意してください。非修飾関数 ARN は $LATEST バージョンにマッピングされますが、追加されるアクセス権限は ARN 固有です。

  • $LATEST バージョン (helloworld:$LATEST) を使用した修飾関数名を使用する場合、アクセス権限は修飾 ARN を使用した helloworld 関数のバージョン $LATEST の呼び出しのみで有効です (非修飾 ARN を使用するとアクセス権限エラーになります)。