すべてのプロダクト
Search
ドキュメントセンター

Function Compute:関数ロールを使用した他のクラウドサービスへのアクセス

最終更新日:Jun 22, 2026

ロギング、VPC アクセス、非同期呼び出しなどの機能を使用する場合、Function Compute は他のクラウドサービスにアクセスするための権限が必要です。 たとえば、関数のロギングを設定するには、Function Compute が関数ログを書き込めるように、指定された Logstore への書き込み権限を付与する必要があります。

承認プロセスを簡素化するために、Function Computeサービスリンクロールをサポートしています。 関数はデフォルトでこのロールを使用するため、追加のロール設定なしでロギング、VPC アクセス、非同期呼び出しなどの機能にアクセスできます。

関数のコードが他のクラウドサービスにアクセスする必要がある場合、またはより詳細な権限が必要な場合は、[関数ロール] を設定する必要があります。 関数が呼び出されると、FC は設定されたロールを自動的に引き受けます。

仕組み

Function Compute は、関数に設定したロールに基づいて AssumeRole API を呼び出すことで一時的な認証情報 (STS トークン) を取得し、コンテキスト内の Credentials または credentials パラメーターを介して関数に渡します。 これらの一時的な認証情報は、設定された権限が適用されるすべてのリソースへのアクセスを許可し、関数コード内で使用して他の Alibaba Cloud サービスにアクセスできます。

一時的な認証情報の有効期間は 36 時間に固定されています。 関数の最大実行時間は 24 時間であるため、実行中に認証情報が期限切れになることはありません。

Credentials または credentials パラメーターの場所は、ランタイムによって異なります。 各ランタイムの詳細については、以下のリンクをご参照ください。 カスタムランタイムとカスタムイメージの場合、一時的な認証情報は HTTP リクエストヘッダーに挿入されます。

例:OSSへのアクセス権の付与

この例では、関数に OSS を管理する権限を付与する方法を示します。 OSS 権限を持つロールを作成し、関数にバインドします。

前提条件

関数の作成

操作手順

ステップ1:ロールの作成と権限の付与

  1. RAMコンソールにログインします。 ナビゲーションペインで、[ロール] > [ロールの作成] を選択します。

  2. [ロールの作成] ページで、[プリンシパルタイプ][クラウドサービス] を、[プリンシパル名][Function Compute / FC] を選択します。 次に、[OK] をクリックします。

  3. 表示される [ロールの作成] ダイアログボックスで、[ロール名]mytestrole のように設定し、[OK] をクリックします。 これにより、ロールの詳細ページにリダイレクトされます。

  4. [権限] タブで、[権限を付与] をクリックします。 [権限を付与] パネルで、次の手順に従ってロールに権限を付与します。

  5. [リソース範囲] を選択します。 プリンシパル は、デフォルトでターゲットロールです。 ポリシーリストから、システムポリシーまたはカスタムポリシーの横にあるチェックボックスを選択して、[選択済みのポリシー] リストに追加します。 次に、[OK] をクリックします。 詳細については、「ポリシーと例」をご参照ください。

    • [アカウント]:現在の Alibaba Cloud アカウント内で権限が有効になります。

    • [リソースグループ]:指定されたリソースグループ内で権限が有効になります。 このオプションは、クラウドサービスがリソースグループをサポートしている場合にのみ使用できます。 詳細については、「リソースグループをサポートするクラウドサービス」をご参照ください。

    この例では、OSS を管理するために、新しいロールに AliyunOSSFullAccess システムポリシーを追加する必要があります。

ステップ2:ターゲット関数へのロールのバインド

  1. Function Compute コンソールにログインします。左側のナビゲーションペインで、関数管理 > 関数リスト を選択します。

  2. 上部メニューでリージョンを選択します。 [関数] ページで、ターゲット関数を見つけ、操作 列の 設定 をクリックします。

  3. 関数の詳細ページで、設定 タブを選択します。 詳細設定 セクションで、変更 をクリックします。 詳細設定 パネルで、権限 セクションを展開します。 関数ロール で、ステップ 1 で作成した mytestrole ロールを選択します。 次に、デプロイ をクリックします。

ステップ3:関数のテスト

mytestrole ロールに関連付けられた関数に OSS を管理する権限があるかどうかをテストします。

  1. 関数リストページで、ターゲット関数をクリックします。 コード タブで、関数のテスト の横にある矢印をクリックし、テストパラメーターの設定 を選択します。 以下はサンプルテストイベントです。

    {
       "endpoint": "http://oss-cn-hangzhou.aliyuncs.com",
       "bucket": "web****",
       "objectName": "myObj",
       "message": "your-message"
    }

    この例では、bucket の値を、関数と同じリージョンに存在するご自身のバケットの名前に置き換えます。

  2. コード タブで、コードエディターにコードを入力し、デプロイメントコード をクリックします。

    この例では Python ランタイムを使用します。 このコードは、Function Compute によって提供される一時的な認証情報を使用して OSS にアクセスします。

    import json
    import oss2
    def handler(event, context):
        evt = json.loads(event)
        creds = context.credentials
        # FC によって挿入された一時的な認証情報を使用します。
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作へのフルアクセスを許可します。
        # API アクセスや日常の O&M には、RAM ユーザーを使用することを推奨します。
        # セキュリティリスクを防ぐため、AccessKey ID と AccessKey シークレットをプロジェクトコードにハードコーディングしないでください。
        # この例では、コンテキストから AccessKey ID、AccessKey シークレット、およびセキュリティトークンを取得する方法を示します。
        auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
        bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
        bucket.put_object(evt['objectName'], evt['message'])
        return 'success'
  3. 関数のテスト をクリックします。 関数の実行が成功したら、OSS コンソールにログインし、ターゲットバケットを見つけ、ターゲットオブジェクトのコンテンツがテストイベントの message パラメーターの値に更新されていることを確認します。

関連ドキュメント

  • Function Compute は、最小権限の承認のためにサービスリンクロールをサポートしています。 サービスリンクロールのポリシーの詳細については、「AliyunServiceRoleForFC」をご参照ください。

  • 関数ロールの設定方法については、「関数の作成」をご参照ください。