如何通过环境变量配置AWS Config连接本地MinIO用于SAM Lambda测试?
问题描述
我在本地环境运行MinIO Docker实例,用于测试(集成)我的SAM(Lambda)应用。MinIO可在本地提供所有标准AWS S3功能,目前通过如下Go代码连接:
awsSession := session.Must(session.NewSession(&aws.Config{ S3ForcePathStyle: aws.Bool(true), // TODO: In production this should be picked automatically as per the region Endpoint: aws.String("host.docker.internal:9000"), DisableSSL: aws.Bool(true), }))
我想了解是否存在可被AWS Config读取的环境变量来指定端点,以便将该环境变量设置为host.docker.internal:9000。
解决方案
AWS SDK for Go支持通过环境变量配置S3相关参数,你可以使用以下几个环境变量替代代码中的硬编码:
AWS_S3_ENDPOINT: 设置S3兼容服务的端点地址,比如host.docker.internal:9000AWS_S3_FORCE_PATH_STYLE: 设置为true,对应代码里的S3ForcePathStyle配置AWS_DISABLE_SSL: 设置为true,对应代码里的DisableSSL配置
修改代码后,SDK会自动读取这些环境变量并应用配置,无需硬编码:
awsSession := session.Must(session.NewSession())
如果需要保留部分自定义默认配置,也可以保留aws.Config结构体,环境变量会自动覆盖对应的字段:
awsSession := session.Must(session.NewSession(&aws.Config{ // 这里可以添加其他需要固定的配置项 }))
创建S3客户端时,直接使用这个session即可,客户端会自动应用环境变量中的端点等配置:
s3Client := s3.New(awsSession)
内容的提问来源于stack exchange,提问作者Kuldeep Yadav
相关产品推荐
相关产品推荐

