本文介绍如何使用Go SDK V2为OSS全局开启阻止公共访问,获取OSS全局阻止公共访问的配置信息以及删除OSS全局阻止公共访问配置信息。
注意事项
本文示例代码以华东1(杭州)的地域ID
cn-hangzhou
为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSS地域和访问域名。本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见配置访问凭证。
示例代码
开启OSS全局阻止公共访问
您可以使用以下代码开启全局阻止公共访问。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // 导入阿里云OSS服务的SDK包
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 导入用于处理认证信息的包
)
var (
region string // 定义一个字符串变量来保存从命令行获取的区域(Region)信息
)
// init函数在main函数之前执行,用来初始化程序。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.") // 通过命令行参数设置region变量,默认为空
}
// main是程序的入口点。
func main() {
flag.Parse() // 解析命令行参数
if len(region) == 0 { // 如果未提供region参数,则输出默认参数并退出程序
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 日志错误并终止程序
}
// 创建配置对象,并使用环境变量作为凭证提供者和指定的区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 使用配置创建一个新的OSS客户端
// 构建一个PutPublicAccessBlock请求,启用阻止公共访问的功能
request := &oss.PutPublicAccessBlockRequest{
PublicAccessBlockConfiguration: &oss.PublicAccessBlockConfiguration{
oss.Ptr(true), // 设置为true以启用阻止公共访问
},
}
putResult, err := client.PutPublicAccessBlock(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put public access block %v", err) // 如果有错误发生,记录错误并退出
}
log.Printf("put public access block result:%#v\n", putResult) // 打印开启阻止公共访问的结果
}
获取OSS全局阻止公共访问的配置信息
您可以使用以下代码获取OSS全局阻止公共访问的配置信息。
package main
import (
"context" // 用于管理带有截止时间、取消信号等功能的上下文
"flag" // 用于解析命令行参数
"log" // 用于打印日志信息
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // 阿里云OSS服务的SDK包
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 处理认证信息的包
)
var (
region string // 存储从命令行获取的区域(Region)信息
)
// 初始化函数,用来设置程序启动前需要完成的工作
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.") // 设置命令行参数来指定region,默认为空字符串
}
// 程序的入口点
func main() {
flag.Parse() // 解析命令行参数
if len(region) == 0 { // 如果没有提供region参数,则输出默认参数并退出程序
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 记录错误并终止程序
}
// 加载默认配置,并使用环境变量作为凭证提供者,同时指定操作的区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 使用配置创建一个新的OSS客户端实例
// 构建一个GetPublicAccessBlock请求,用于获取当前存储空间的阻止公共访问设置
request := &oss.GetPublicAccessBlockRequest{}
getResult, err := client.GetPublicAccessBlock(context.TODO(), request) // 执行请求以获取阻止公共访问状态
if err != nil {
log.Fatalf("failed to get public access block %v", err) // 如果有错误发生,记录错误信息并终止程序
}
log.Printf("get public access block result:%#v\n", getResult) // 打印获取到的阻止公共访问结果
}
删除OSS全局阻止公共访问配置信息
您可以使用以下代码删除OSS全局阻止公共访问的配置信息。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // 阿里云OSS服务的SDK包
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 处理认证信息的包
)
var (
region string // 定义一个变量来保存从命令行获取的区域(Region)信息
)
// init函数在main函数之前执行,用来初始化程序。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.") // 设置命令行参数来指定region,默认为空字符串
}
// main是程序的入口点。
func main() {
flag.Parse() // 解析命令行参数
if len(region) == 0 { // 如果未提供region参数,则输出默认参数并退出程序
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 日志错误并终止程序
}
// 创建配置对象,并使用环境变量作为凭证提供者和指定的区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 使用配置创建一个新的OSS客户端实例
// 构建一个DeletePublicAccessBlock请求,用于删除存储空间的阻止公共访问设置
request := &oss.DeletePublicAccessBlockRequest{}
result, err := client.DeletePublicAccessBlock(context.TODO(), request) // 发送请求以删除阻止公共访问设置
if err != nil {
log.Fatalf("failed to delete public access block %v", err) // 如果有错误发生,记录错误信息并终止程序
}
log.Printf("delete public access block result:%#v\n", result) // 打印删除阻止公共访问的结果
}
相关文档
关于管理OSS全局阻止公共访问的完整示例,请参见Github示例。
关于开启OSS全局阻止公共访问的API接口说明,请参见PutPublicAccessBlock。
关于获取OSS全局阻止公共访问的配置信息的API接口说明,请参见GetPublicAccessBlock。
关于删除OSS全局阻止公共访问配置信息的API接口说明,请参见DeletePublicAccessBlock。
文档内容是否对您有帮助?