外部ステージ、外部関数、外部ボリューム用の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 関数の出力に
id
、expires
、purpose
の子プロパティを含む新しいプロパティの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;
この変更によって影響を受ける可能性のある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;
この変更によって影響を受ける可能性のある外部ボリュームの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;
現在のSnowflake VPC IDを含む可能性のあるAWSポリシーを見つけるにはどうすればよいですか?¶
変更の影響を受ける可能性のあるポリシーを特定するには、 AWS CLI を使用します。
SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO コマンドを実行し、snowflake-vpc-idで返されるVPC IDに注意してください。
次のスクリプトを実行して、IAMポリシーのARNsと、現在のSnowflake VPC IDを持つリソースポリシーを含むAPI GatewaysのAPI IDsを表示させます。スクリプトの実行には時間がかかります。
リストされたポリシーを確認し、上記の指示に従って、追加の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
Ref: 1910