DataPower API Gateway のみ

ラムダ

Lambda ポリシーを使用して、API のデフォルトのアクティビティー・ロギング構成をカスタマイズまたはオーバーライドします。

ゲートウェイのサポート

表 1. このポリシーをサポートするゲートウェイと、対応するポリシーのバージョンを示す表
ゲートウェイ ポリシーのバージョン
DataPower® API Gateway 1.0.0

このトピックでは、 OpenAPI ソースでのポリシーの構成方法について説明します。アセンブリー・ユーザー・インターフェースでのポリシーの構成方法について詳しくは、 Lambdaを参照してください。

製品情報

Lambda ポリシーを使用すると、Amazon API Gatewayを使用することなく、API のアセンブリー内から AWS Lambda 関数をトリガーできます。 ポリシーを API アセンブリーに追加するときに、呼び出す Lambda 関数を指定し、それを使用するための資格情報を指定することができます。 資格情報は、 AWS IAM 役割、またはアクセス・キー ID/ 秘密アクセス・キーのペアのいずれかです。

API Connectがラムダ関数を呼び出せるようにするには、以下のタスクを実行します:
  1. このトピックの「 AWS 」セクションの説明に従って、 AWS の Lambda 関数へのアクセスを構成します。
  2. このトピックのプロパティセクションにあるポリシーのプロパティを使用して、API ConnectでAPIポリシーを定義します。
注:
  • LambdaポリシーはVPCエンドポイントを使用し、ゲートウェイからLambdaサービスへの通信がAWSプライベートバックボーン経由であることを保証する。
  • Lambdaに関する情報やLambdaの機能の使い方については、AWSLambdaのドキュメントを参照してください。

AWS での許可およびトラストのセットアップ

Lambda ポリシーを使用するには、AWS アカウントでロールを設定し、権限ポリシーと信頼関係を指定して、API Connect が AWS Lambda 関数を呼び出せるようにする必要があります。 AWS Lambda ポリシーを使用する場合、以下の 2 つの認証オプションがあります。

ニーズに最も適したオプションの説明を使用してください。

アクセス・キー ID/ 秘密アクセス・キー
1 つ以上の Lambda 関数を呼び出す権限を持つアカウントの AWS Access Key ID/AWS 秘密アクセス・キーのペアを指定します。 このアカウントの許可の有効範囲は、できるだけ狭くする必要があります。このアカウントは、1 つ以上の Lambda 関数を呼び出す権限以外の権限を持たないサービス・アカウントにする必要があります。 詳細については、「Identity-Based IAM Policies for Lambda」のドキュメントを参照してください。

アクセスキーID/シークレットアクセスキー認証オプションを使用するには、以下の手順に従ってアカウントのIAMサービスを使用し、API Connectとの限定的な通信を容易にする適切な権限を持つIAMサービスアカウントを作成します:

  1. AWSマネジメントコンソールにサインインし、IAMコンソールを開きます。
  2. AWS IAM コンソールで、ナビゲーション・リストの 「ユーザー」 をクリックし、 「ユーザーの追加」をクリックします。
  3. 「ユーザー詳細の設定 (Set user details)」というプロンプトが出されたら、 「ユーザー名」 ( AWS アカウント内で固有) を指定し、 「アクセス・キー-プログラマチック・アクセス (Access key-Programmatic access)」を選択します。

    Password - AWS Management Console access オプションを選択できますが、API Connect との対話には必要ありません。

    新規ユーザー・アカウントの権限を定義するためのさまざまなオプションがあります。 ユーザーをユーザーグループに追加する、またはユーザーにポリシーを直接添付する方法については、『AWSIdentity and Access Management ユーザーガイド』を参照してください。

    最小特権の原則に準拠するユーザー権限を定義する簡単な方法は、以下のステップで示すように、権限を持たない IAM ユーザーを作成し、そのユーザーを特定の Lambda 関数の権限構成に追加することです。

  4. 「ユーザー詳細の設定 (Set user details)」ページで、新規ユーザー・アカウントを変更せずに 「次: タグ (Next: Tags)」 をクリックします。
  5. 目的の 「タグ」 を作成し、 「次: レビュー」をクリックします。
  6. 設定を確認し、 「ユーザーの作成」をクリックします。

    残りのステップで権限を割り当てるため、 This user has no permissions という警告は無視してください。

  7. 「.csv のダウンロード」 をクリックして、新規ユーザーの 「アクセス・キー ID」「秘密アクセス・キー」を保存し、安全な場所に保管します。 これらの値は、AWS Access Key IDAWS Secret Access Keyとして、API ConnectでAPIのLambdaポリシーを設定する際に使用されます。
  8. Lambda 関数を更新して、新規ユーザーに許可を提供します。
    1. Lambda コンソールで、 「関数」 ページを開きます。
    2. API Connectが呼び出す関数を選択します。
    3. 「構成」をクリックします。
    4. 「リソース・ベースのポリシー・ステートメント」 セクションで、 「許可の追加」をクリックします。
    5. AWS アカウント を選択し、固有の ステートメント IDを追加します。
    6. 「プリンシパル」 を新規ユーザーの ARN に設定します。

      arn:aws:iam::<AWS_account_ID>:user/<username>, available on the ユーザー > <ユーザー名 page.

    7. 「アクション」lambda:InvokeFunctionに設定します。
    8. 保存 をクリックします。

    ユーザー・アカウントが呼び出す Lambda 関数ごとに、このステップを繰り返します。

想定ロール ARN
1 つ以上の Lambda 関数を呼び出す権限を持つロールの AWS Asコンシューム・ロール ARN を指定します。 この役割には、パラメーター ActionConditionEffect、および Principalを含むトラスト・ポリシーの特定の構成が必要です。

この役割のアクセス権は、可能な限り狭く設定する必要があります。この役割には、1 つ以上の Lambda 関数を呼び出す機能以外のアクセス権があってはなりません。 詳細については、ラムダのパーミッションに関するドキュメントを参照してください。

AWS Assume Role ARN認証オプションを使用するには、以下の手順に従って、アカウントのIAMサービスで適切なAWS PolicyとRoleを作成し、API Connectとの限定的な通信を容易にします:

  1. AWSマネジメントコンソールにサインインし、IAMコンソールを開きます。
  2. AWS IAM コンソールで、ナビゲーション・リストの 「役割」 をクリックし、 「役割の作成」をクリックします。
  3. 「トラステッド・エンティティーの選択 (Select trusted entity)」というプロンプトが出されたら、 「カスタム・トラスト・ポリシー (Custom trust policy)」をクリックし、以下のコード例を参考にしてトラスト・ポリシーを作成し、 「次へ」をクリックします。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::623947394061:role/ibm-apiconnect-<apic_region>"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "sts:ExternalId": "<apic_provider_org_ID>"
                    }
                }
            }
        ]
    }
    以下の変数を独自の値に置き換えます。
    • <apic_region> は、 API Connect サービス・インスタンスをデプロイした地域です (例: us-east-a)。
    • <apic_provider_org_ID>はあなたのプロバイダー組織のAPI ConnectIDです。
      プロバイダー組織の名前を判別するには、以下のようにします。
      1. 例えば、--ssoオプションを使ってAPI Connectにログインする:
        ./apic login \
          --sso \
          --context provider \
          --server platform-api.<apic_region>.example.com

        ここで、 <apic_region> は、 API Connect サービス・インスタンスをデプロイした地域です。

      2. 以下のコマンドを実行して、プロバイダー組織のAPI Connect IDを取得してください:
        ./apic orgs:list \
          --my \
          --fields name,id \
          --format yaml \
          --output - \
          --server platform-api.<apic_region>.example.com

        ここで、 <apic_region> は、 API Connect サービス・インスタンスをデプロイした地域です。

        この応答では、プロバイダー組織名のリストが、それぞれの名前に対応する ID とともに返されます。

  4. 「権限の追加 (Add permissions)」というプロンプトが出されたら、新しい役割にポリシーを追加する方法を選択します。
    • AWSLambdaRole ポリシーを添付します。

      AWSLambdaRole ポリシーは AWS によって管理され、必要な lambda:InvokeFunction アクションを許可します。 ポリシーの有効範囲は、現在の AWS アカウント内のすべての Lambda 関数に適用されます。

    • lambda:InvokeFunction アクションを許可する独自のカスタム・ポリシーを作成します。

      より厳格にスコープ設定されたポリシーを使用する場合は、新規役割の作成時にポリシーを作成するか、事前にポリシーを作成して新規役割の作成時に添付することができます。 ポリシーを作成するには、IAM コンソールのナビゲーション・リストで 「ポリシー」をクリックしてから、 「ポリシーの作成」をクリックします。

    使用するポリシーでは、必要な Lambda 関数リソース (複数可) に対する lambda:InvokeFunction アクションを許可する必要があります。 以下のサンプル・ポリシーの有効範囲は、単一の Lambda 関数です。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "lambda:InvokeFunction",
                "Resource": "arn:aws:lambda:us-east-1:<AWS_account_ID>:function:<lambda_function_name>"
            }
        ]
    }
    以下の変数を独自の値に置き換えます。
    • <AWS_account_ID>API Connect AWSのプロダクション・アカウントIDです:
      623947394061
    • <lambda_function_name> は、実行する AWS Lambda 関数の名前または Amazon リソース名 (ARN) です。

    別のポリシー構造については、『AWSIdentity and Access Management User Guide』を参照。

  5. 「役割名」「説明」、およびいくつかの 「タグ」を指定します。
  6. 「役割の作成」をクリックします。

API ConnectでAPIのLambdaポリシーを設定する際に、AWS Assume Role ARNフィールドの値として新しいロールのARNを指定します。

プロパティ-

以下の表に、このポリシーのプロパティーをリストします。表には、プロパティーが必須かどうか、入力用の有効な値とデフォルト値、および値のデータ型が示されています。

表 2. レート制限 ポリシーのプロパティー
プロパティー 必須 説明 データ・タイプ
title いいえ ポリシーのタイトル。 デフォルト値は lambdaです。 ストリング
description いいえ ポリシーの説明。 ストリング
AWS Access Key ID はい AWS アクセス・キーは、 AWS IAM ユーザーの長期の資格情報です。 代わりに AWS Assume Role ARN が指定されていない場合は必須です。

AWSでのアクセス・キー・ペアの作成手順については、このトピックの アクセス・キー ID/ 秘密アクセス・キー を参照してください。

ストリング
AWS Secret Access Key はい 指定された AWS Access Key IDに対応する秘密アクセス・キー。 ストリング
AWS Assume Role ARN はい AWS IAM RoleのARNで、API ConnectがAWSラムダ関数を実行する際に想定するもの。 AWS Access Key IDAWS Secret Access Keyがない場合は必須。

AWSでのコンシューム・ロールの作成手順については、このトピックの ロール ARN のコンシューム を参照してください。

ストリング
function はい 実行する AWS Lambda 関数の名前または Amazon リソース名 (ARN)。以下のいずれかの形式を使用します。
  • 関数名 (例: my-function )
  • 関数 ARN。例: arn:aws:lambda:us-west-2:123456789012:function:my-function
  • 部分 ARN- 123456789012:function:my-function

詳細については、AWSLambda Developer GuideのFunctionNameを参照してください。

ストリング
region はい Lambda 関数がホストされている AWS 領域。 ストリング
qualifier いいえ 実行対象の Lambda 関数の別名またはバージョン。

詳細については、AWSLambda Developer GuideのQualifierを参照してください。

ストリング