外部ステージ、外部関数、外部ボリューム用のAmazon Virtual Private Cloud ID

Snowflakeから出ていくデータの管理を強化するためのSnowflakeの継続的なコミットメントの一環として、新しいAmazon Virtual Private Cloud(VPC)にイグレスコントロールポイントを移行しています。これにより、Snowflakeが外部関数、外部ステージ、外部ボリュームのアウトバウンド接続を行う際に使用するAmazon VPC IDが変更されます。

注釈

Amazon S3互換ストレージ をご利用のお客様は、この変更の影響を受ける可能性のあるポリシーがあるかどうかを確認し、それに従ってポリシーを更新してください。

公開されているVPC IDに基づいてAPI GatewaysまたはS3ステージに入ってくるトラフィックをフィルターしているお客様は、新しいVPC IDを含めるようにポリシーを更新する必要があります。

allowlistに追加する必要があるVPC IDsの全リストを取得するには、 SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO 関数を実行してください。

動作変更

変更前:

SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO の出力には snowflake-egress-vpc-ids プロパティが含まれていません。

変更後:

SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO 関数の出力に idexpirespurpose の子プロパティを含む新しいプロパティの snowflake-egress-vpc-ids を含むようになります。

関数の出力は次のようになります。

{
  "snowflake-vpc-id": ["<existing VPC ID>"],
  "snowflake-egress-vpc-ids": [
    {
      "id": "<existing VPC ID>",
      "expires": "2025-03-01T00:00:00",
      "purpose": "generic"
    },
    {
      "id": "<new VPC ID>",
      "expires": "2025-03-01T00:00:00",
      "purpose": "generic"
    }
  ]
}

お客様は、 snowflake-egress-vpc-ids プロパティ内の id フィールドを確認し、 "purpose":"generic". generic IDsとしてマークされた id 値は、Snowflakeのコア機能をサポートするためにallowlistに追加する必要があるVPC IDsであることに注意してください。

この変更は2025年2月24日の週に発効します。

注釈

この関数は、VPC IDsのリストを返します: 現在使用されているVPC IDと新しいVPC IDです。 snowflake-vpc-id のVPC IDsは snowflake-egress-vpc-ids に複製されますが、 "purpose":"generic" としてマークされます。一般的な目的を持つすべてのVPC IDsはポリシーのallowlistに追加する必要があります。

expires プロパティは、関連するVPC IDが有効であることが保証される日時を指定します。お客様は、有効期限が切れる前に、関数をクエリする自動化またはプロセスを更新し、現在のVPC IDsに関する最新情報を確実に入手する必要があります。

出力VPC IDsは安定しており、有効期限は自動的に更新延長されます。

Snowflakeは将来的にVPC IDs、変更する必要性が生じる可能性があるかもしれませんが、2025年3月31日まで変更の予定はありません。この情報は主に今後の参照用になります。

以下のSnowflake機能の利用を継続するには、以下の変更を行う必要があります。

外部ステージとボリューム:

仮想プライベートクラウドIDsを許可する の指示に従って、外部ステージまたは外部ボリュームにVPC IDsを指定します。

外部関数:

Amazon API Gatewayのエンドポイント保護する の指示に従って、外部関数にVPC IDsを指定します。

タイムライン

ステージ1:

2025年2月24日の週から、 SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO 関数は snowflake-egress-vpc-ids 要素の下にある新しいイグレスVPC IDsを含むように、すべてのAWSデプロイで更新されます。お客様は、これらの新しいVPC IDsをallowlistに追加するために、S3とAPIゲートウェイのポリシーの更新を開始できます。

ステージ2:

2025年6月9日(以前は2025年5月24日)の週より、Snowflakeは外部ステージ、外部関数、外部ボリュームに新しいVPCsを使用するように段階的に移行を開始します。お客様は、S3とAPIゲートウェイのポリシー更新を必ずこの日までに完了しておいてください。

よくある質問

この変更によって影響を受ける外部ステージのS3バケットを見つけるにはどうすればいいですか?

ACCOUNTADMINロールを使用して、以下のクエリを実行し、変更の影響を受ける外部ステージを特定してください。

USE ROLE ACCOUNTADMIN;

SELECT stage_url, stage_region, stage_owner, stage_catalog, stage_schema
  FROM SNOWFLAKE.ACCOUNT_USAGE.STAGES
  WHERE STARTSWITH(stage_url, 's3')
    AND stage_url IS NOT NULL
    AND deleted IS NULL;
Copy

この変更によって影響を受ける可能性のあるAPI Gatewaysを見つけるにはどうすればよいですか?

ACCOUNTADMINロールを使用して、以下のクエリを実行し、変更の影響を受けるS3ゲートウェイを特定してください。

USE ROLE ACCOUNTADMIN;

SELECT function_name, function_definition, function_owner, function_catalog, function_schema
  FROM SNOWFLAKE.ACCOUNT_USAGE.FUNCTIONS
  WHERE function_language = 'EXTERNAL'
    AND function_definition ILIKE '%.execute-api.%.amazonaws.com%'
    AND deleted IS NULL;
Copy

この変更によって影響を受ける可能性のある外部ボリュームのS3バケットを見つけるにはどうすればよいですか?

ACCOUNTADMINロールを使用して、以下のクエリを実行し、変更の影響を受けるS3バケットを特定してください。

use role accountadmin;

DECLARE
res1 RESULTSET;
res2 RESULTSET;
sql_vol VARCHAR;
rpt VARIANT;
rpt_int VARIANT;
BEGIN
  rpt := object_construct();
  sql_vol := 'SELECT PROPERTY, VALUE:"NAME"::VARCHAR as NAME, VALUE:"STORAGE_ALLOWED_LOCATIONS"::VARCHAR as S3_PATH FROM (
SELECT PARSE_JSON(T."property_value") AS VALUE, T."property" as PROPERTY
FROM TABLE(RESULT_SCAN(last_query_id())) T
WHERE T."property_type" = \'String\'
AND T."property" != \'ACTIVE\'
AND VALUE:"STORAGE_PROVIDER"=\'S3\')
;';
  show external volumes;
  LET c1 CURSOR FOR SELECT * FROM TABLE(RESULT_SCAN(last_query_id()));
  OPEN c1;
  FOR record IN c1 DO
    res1 := (execute immediate 'describe external volume ' || record."name");
    res2 := (execute immediate :sql_vol);
    rpt_int := object_construct();
    let c2 CURSOR for res2;
    open c2;
    for inner_record in c2 do
        rpt_int := object_insert( rpt_int, inner_record.NAME, inner_record.S3_PATH);
    end for;

    rpt := object_insert( rpt, record."name", rpt_int );
  END FOR;
  RETURN rpt;
END;
Copy

現在のSnowflake VPC IDを含む可能性のあるAWSポリシーを見つけるにはどうすればよいですか?

変更の影響を受ける可能性のあるポリシーを特定するには、 AWS CLI を使用します。

  1. SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO コマンドを実行し、snowflake-vpc-idで返されるVPC IDに注意してください。

  2. 次のスクリプトを実行して、IAMポリシーのARNsと、現在のSnowflake VPC IDを持つリソースポリシーを含むAPI GatewaysのAPI IDsを表示させます。スクリプトの実行には時間がかかります。

  3. リストされたポリシーを確認し、上記の指示に従って、追加のVPC IDを含ませるために更新の必要があるポリシーを決定します。

SNOWFLAKE_VPC_ID="<VPC ID returned in snowflake-vpc-id>"

# List ARNs of IAM policies that contain the current Snowflake VPC ID.
aws iam list-policies --scope Local --query 'Policies[*].Arn' --output text | tr '\t' '\n' | while read -r policy_arn; do
  version_id=$(aws iam get-policy --policy-arn "${policy_arn}" --query 'Policy.DefaultVersionId' --output text)
  aws iam get-policy-version --policy-arn "${policy_arn}" --version-id "${version_id}" | grep -q "${SNOWFLAKE_VPC_ID}" && echo "${policy_arn}"
done

# List API IDs of API Gateways that contain resource policies with the current Snowflake VPC ID.
aws apigateway get-rest-apis --query 'items[*].id' --output text --profile | tr '\t' '\n' | while read -r api_id; do
  aws apigateway get-rest-api --rest-api-id "${api_id}" --query 'policy' --output text | grep -q "${SNOWFLAKE_VPC_ID}" && echo "${api_id}"
done
Copy

Ref: 1910