ALTER STORAGE INTEGRATION¶
修改现有存储集成的属性。
语法¶
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> SET
[ cloudProviderParams ]
[ ENABLED = { TRUE | FALSE } ]
[ STORAGE_ALLOWED_LOCATIONS = ('<cloud>://<bucket>/<path>/' [ , '<cloud>://<bucket>/<path>/' ... ] ) ]
[ STORAGE_BLOCKED_LOCATIONS = ('<cloud>://<bucket>/<path>/' [ , '<cloud>://<bucket>/<path>/' ... ] ) ]
[ COMMENT = '<string_literal>' ]
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER [ STORAGE ] INTEGRATION <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> UNSET {
ENABLED |
STORAGE_BLOCKED_LOCATIONS |
COMMENT
}
[ , ... ]
其中:
cloudProviderParams (for Amazon S3) ::= STORAGE_AWS_ROLE_ARN = '<iam_role>' [ STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' ] [ STORAGE_AWS_EXTERNAL_ID = '<external_id>' ]cloudProviderParams (for Microsoft Azure) ::= AZURE_TENANT_ID = '<tenant_id>'
参数¶
name
要更改的集成的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
SET ...
指定要为表设置的一个或多个属性/参数(用空格、逗号或新行分隔):
ENABLED = TRUE | FALSE
指定此存储集成是否可在暂存区中使用。
TRUE
允许用户创建引用此集成的新暂存区。通常引用此集成函数的现有暂存区。FALSE
阻止用户创建引用此集成的新暂存区。引用此集成的现有暂存区无法访问暂存区定义中的存储位置。
STORAGE_ALLOWED_LOCATIONS = ('cloud_specific_url')
显式限定使用集成的外部暂存区只能引用一个或多个存储位置(Amazon S3、Google Cloud Storage 或 Microsoft Azure)。支持以逗号分隔的现有桶 URLs,以及用于存储数据文件以进行加载/卸载的路径(可选)。此外还支持
*
通配符,即“允许访问所有桶和/或路径”。Amazon S3
STORAGE_ALLOWED_LOCATIONS = ( 's3://bucket/path/' [ , 's3://bucket/path/' ... ] )
|STORAGE_ALLOWED_LOCATIONS = ( 's3gov://bucket/path/' [ , 's3gov://bucket/path/' ... ] )
bucket
代表存储数据文件的 S3 桶的名称(例如mybucket
)。path
是云存储位置中文件的可选路径(即文件的名称以公共字符串开头),且区分大小写,用于限制对一组文件的访问。不同的云存储服务也可以将路径称为 前缀 或 文件夹。
Google Cloud Storage
STORAGE_ALLOWED_LOCATIONS = ( 'gcs://bucket/path/' [ , 'gcs://bucket/path/' ... ] )
bucket
是存储数据文件的 GCS 桶的名称(例如mybucket
)。path
是云存储位置中文件的可选路径(即文件的名称以公共字符串开头),且区分大小写,用于限制对一组文件的访问。不同的云存储服务也可以将路径称为 前缀 或 文件夹。
Microsoft Azure
STORAGE_ALLOWED_LOCATIONS = ( 'azure://account.blob.core.windows.net/container/path/' [ , 'azure://account.blob.core.windows.net/container/path/' ... ] )
account
是 Azure 账户的名称(例如myaccount
)。将blob.core.windows.net
端点用于所有受支持类型的 Azure Blob 存储账户,包括 Data Lake Storage Gen2。container
是存储数据文件的 Azure 容器的名称(例如mycontainer
)。path
是云存储位置中文件的可选路径(即文件的名称以公共字符串开头),且区分大小写,用于限制对一组文件的访问。不同的云存储服务也可以将路径称为 前缀 或 文件夹。
STORAGE_BLOCKED_LOCATIONS = ('cloud_specific_url')
显式禁止使用集成的外部暂存区引用一个或多个存储位置(Amazon S3、Google Cloud Storage 或 Microsoft Azure)。支持以逗号分隔的 URLs 现有存储位置列表,以及用于存储数据文件以进行加载/卸载的路径(可选)。通常用于 STORAGE_ALLOWED_LOCATIONS 设置为
*
通配符的时候,允许访问您账户中除阻止的存储位置和路径(可选) :emph:` 之外 ` 的所有桶。备注
确保仅在引号之间包含单个云存储位置 URLs。如果在引号之间包含整个
STORAGE_BLOCKED_LOCATIONS
值,则该值无效。因此,在用户创建引用存储集成的暂存区时,STORAGE_BLOCKED_LOCATIONS
参数设置会被忽略。Amazon S3
STORAGE_BLOCKED_LOCATIONS = ( 's3://bucket/path/' [ , 's3://bucket/path/' ... ] )
|STORAGE_ALLOWED_LOCATIONS = ( 's3gov://bucket/path/' [ , 's3gov://bucket/path/' ... ] )
bucket
代表存储数据文件的 S3 桶的名称(例如mybucket
)。path
是桶中的可选路径(或 目录),用于进一步限制对数据文件的访问。
Google Cloud Storage
STORAGE_BLOCKED_LOCATIONS = ( 'gcs://bucket/path/' [ , 'gcs://bucket/path/' ... ] )
bucket
是存储数据文件的 GCS 桶的名称(例如mybucket
)。path
是桶中的可选路径(或 目录),用于进一步限制对数据文件的访问。
Microsoft Azure
STORAGE_BLOCKED_LOCATIONS = ( 'azure://account.blob.core.windows.net/container/path/' [ , 'azure://account.blob.core.windows.net/container/path/' ... ] )
account
是 Azure 账户的名称(例如myaccount
)。container
是存储数据文件的 Azure 容器的名称(例如mycontainer
)。path
是容器中的可选路径(或 目录),用于进一步限制对数据文件的访问。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 对象和列的标签配额。
COMMENT = 'string_literal'
字符串(字面量),用于指定集成注释。
UNSET ...
指定要为存储集成取消设置的一个或多个属性/参数,这会将它们重置回默认值:
ENABLED
STORAGE_BLOCKED_LOCATIONS
TAG tag_name [ , tag_name ... ]
COMMENT
云提供商参数 (cloudProviderParams
)¶
Amazon S3
STORAGE_AWS_ROLE_ARN = 'iam_role'
指定 AWS Identity and Access Management (IAM) 角色的 Amazon Resource Name (ARN),该角色授予对包含数据文件的 S3 桶的权限。有关更多信息,请参阅 配置对 Amazon S3 的安全访问。
STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control'
启用对 AWS 访问控制列表 (ACLs) 的支持,以向 S3 桶所有者授予完全控制权。通过卸载的表数据在 Amazon S3 桶中创建的文件由 AWS Identity and Access Management (IAM) 角色所拥有。ACLs 支持以下用例:配置一个 AWS 账户中的 IAM 角色,以访问一个或多个其他 AWS 账户中的 S3 桶。若没有 ACL 支持,桶所有者账户中的用户无法访问使用存储集成卸载到外部 (S3) 暂存区的数据文件。
当用户使用 COPY INTO <location> 将 Snowflake 表数据卸载到 S3 暂存区中的数据文件时,卸载操作会将 ACL 应用到卸载的数据文件。数据文件将
"s3:x-amz-acl":"bucket-owner-full-control"
权限应用于文件,授予 S3 桶所有者对它们的完全控制权。STORAGE_AWS_EXTERNAL_ID = 'external_id'
指定 Snowflake 与 AWS 建立信任关系所使用的外部 ID。您必须在为此存储集成配置的 IAM 角色的信任策略中指定相同的外部 ID。有关更多信息,请参阅向第三方授予 AWS 资源访问权限时 ` 如何使用外部 ID <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)>`_。
Microsoft Azure
AZURE_TENANT_ID = 'tenant_id'
为允许和阻止的存储账户所属的 Office 365 租户指定 ID。存储集成只能对一个租户进行身份验证,因此允许和阻止的存储位置必须引用同属于此租户的存储账户。
要查找租户 ID,请登录 Azure 门户并点击 Azure Active Directory » Properties。租户 ID 将显示在 Tenant ID 字段中。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
以下示例启动了已暂停的集成的操作:
ALTER STORAGE INTEGRATION myint SET ENABLED = TRUE;