외부 스테이지, 외부 함수 및 외부 볼륨을 위한 Amazon Virtual Private Cloud ID¶
Snowflake를 떠나는 데이터에 대한 제어를 개선하기 위한 지속적인 노력의 일환으로, 송신 제어 지점을 새로운 Amazon Virtual Private Cloud(VPC)로 마이그레이션하고 있습니다. 이렇게 하면 외부 함수, 외부 스테이지 및 외부 볼륨에 대한 아웃바운드 연결을 할 때 Snowflake에서 사용하는 Amazon VPC ID 로 변경됩니다.
참고
Amazon S3 호환 저장소 를 사용하는 고객은 이 변경의 영향을 받을 수 있는 정책이 있는지 확인하고 그에 따라 정책을 업데이트해야 합니다.
게시된 VPC ID 를 기준으로 API 게이트웨이 또는 S3 스테이지로 수신 트래픽을 필터링하는 고객은 새로운 VPC ID 를 포함하도록 정책을 업데이트해야 합니다.
허용 목록에 추가해야 하는 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
필드를 살펴보고 id
값이 "purpose":"generic"
으로 표시되어 있는지 확인해야 합니다. generic
IDs는 VPC IDs 로 표시되어 있으며, 코어 Snowflake 기능을 지원하려면 허용 목록에 추가해야 합니다.
이 변경 사항은 2025년 2월 24일 주에 적용됩니다.
참고
이 함수는 VPC IDs: 현재 사용 중인 VPC ID 및 새 VPC ID 의 목록을 반환합니다. VPC IDs 의 snowflake-vpc-id
는 snowflake-egress-vpc-ids
에 중복되지만 "purpose":"generic"
으로 표시됩니다. 일반적인 목적을 가진 모든 VPC IDs 는 정책에 허용 목록에 포함되어야 합니다.
expires
속성은 연결된 VPC ID 가 유효하게 유지되는 날짜와 시간을 지정합니다. 고객은 만료일 전에 함수를 쿼리할 수 있는 자동화 또는 프로세스를 업데이트하여 현재 VPC IDs 에 대한 최신 정보를 확보해야 합니다.
출력 VPC IDs 는 안정적이며 만료 날짜가 자동으로 업데이트 및 연장됩니다.
Snowflake는 향후 VPC IDs변경이 필요할 수 있지만, 2025년 3월 31일 이 전에는 변경할 계획이 없습니다. 이 정보는 주로 나중에 참조하기 위한 것입니다.
다음 Snowflake 기능에 계속 액세스하려면 다음과 같이 변경해야 합니다.
- 외부 스테이지 및 볼륨:
가상 프라이빗 클라우드 IDs 허용 의 지침에 따라 외부 스테이지 또는 외부 볼륨에 대해 VPC IDs 를 지정하십시오.
- 외부 함수:
Amazon API게이트웨이 엔드포인트 보안 의 지침에 따라 외부 함수에 대해 VPC IDs 를 지정하십시오.
타임라인¶
- 스테이지 1:
2025년 2월 24일 주부터 모든 AWS 배포에서 SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO 함수가 업데이트되어
snowflake-egress-vpc-ids
요소 아래에 새로운 송신 VPC IDs 가 포함됩니다. 고객은 S3 및 API 게이트웨이 정책을 업데이트하여 새로운 VPC IDs 를 허용 목록에 추가할 수 있습니다.- 스테이지 2:
2025년 6월 9일(기존 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 게이트웨이는 어떻게 찾을 수 있나요?¶
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 및 리소스 정책이 포함된 API 게이트웨이의 API IDs 를 현재 Snowflake VPC ID 와 함께 나열합니다. 스크립트를 실행하는 데에는 시간이 걸릴 수 있습니다.
목록에 있는 정책을 검토하고 위의 지침에 따라 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