---
url: /v6.2/s3-replace-of-minio.md
---
# 替换衡石minio

在使用HENGSHI SENSE服务过程中，可以根据业务需要替换HENGSHI自带的minio。本文讲述使用Aws S3和Aliyun OSS替代衡石minio的过程。

## 准备工作

在进行配置前，请在aws s3或aliyun oss完成如下准备工作。

1. 创建access_key和secret_access_key

   aws操作参考： [管理IAM用户的访问密钥](https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_credentials_access-keys.html)

   aliyun操作参考： [访问控制/创建AccessKey](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair)

2. access_key和secret_access_key 配置权限可访问衡石使用的Bucket

AWS策略参考

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListAllAndLocation",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws-cn:s3:::*"
        },
        {
            "Sid": "FullAccessToSpecificBucket",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws-cn:s3:::[Your-Bucket-Name]",
                "arn:aws-cn:s3:::[Your-Bucket-Name]/*"
            ]
        }
    ]
}
```

阿里云策略参考

```json
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "oss:*",
      "Resource": [
        "acs:oss:oss-*:*:[Your-Bucket-Name]",
        "acs:oss:oss-*:*:[Your-Bucket-Name]/*"
      ]
    }
  ]
}
```

详细配置请参考官方文档

[Amazon S3 基于身份的策略示例](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/example-policies-s3.html)

[Aliyun OSS 基于身份的策略示例](https://help.aliyun.com/zh/oss/user-guide/common-examples-of-bucket-policy)

3. endpoint（访问域名）

   aws访问域名参考： [Endpoints and ARNs(中国)](https://docs.amazonaws.cn/en_us/aws/latest/userguide/endpoints-arns.html)

   aws访问域名参考： [Endpoints and ARNs(全球)](https://docs.aws.amazon.com/general/latest/gr/s3.html)

   aliyun访问域名参考： [OSS访问域名和数据中心](https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints)

## 修改MINIO相关配置

单机部署： 在文件`${HS_HOME}/conf/hengshi-sense-env.sh` 中修改如下配置项 (以下7个选项都必须要配置)

```shell
export MINIO_ROOT_USER=[access_key]
export MINIO_ROOT_PASSWORD=[secret_access_key]
export MINIO_SERVER_HOST=[endpoint]
export MINIO_SERVER_PORT=[endpoint_port] # endpoint是http协议填写80 https填写443
export OBJECT_REGION_CODE=[region_code] # region 必须要配置
export OBJECT_ROOT_BUCKET_NAME=[bucket_name]

export HS_MINIO_IF_EXTERNAL=true # 声明使用外部对象存储替代衡石minio
```

Docker部署： 在`docker-compose.yml同级目录目下的文件.env` 中修改如下配置项 (以下7个选项都必须要配置)

```shell
MINIO_ROOT_USER=[access_key]
MINIO_ROOT_PASSWORD=[secret_access_key]
MINIO_SERVER_HOST=[endpoint]
MINIO_SERVER_PORT=[endpoint_port] # endpoint是http协议填写80 https填写443
OBJECT_REGION_CODE=[region_code] # region 必须要配置
OBJECT_ROOT_BUCKET_NAME=[bucket_name]

HS_MINIO_IF_EXTERNAL=true # 声明使用外部对象存储替代衡石minio
```

集群部署： 在`${HS_HOME}/ansible/vars.yml` 中修改如下配置项 (以下7个选项都必须要配置)

```shell
#------- hengshi_config will overwrite the 'deperacated' vars above ----------
hengshi_config:
- export HS_HENGSHI_PORT=8081
- export HS_PG_PORT=54320
....
- export MINIO_ROOT_USER=[access_key]
- export MINIO_ROOT_PASSWORD=[secret_access_key]
- export MINIO_SERVER_HOST=[endpoint]
- export MINIO_SERVER_PORT=[endpoint_port] # endpoint是http协议填写80 https填写443
- export OBJECT_REGION_CODE=[region_code]
- export OBJECT_ROOT_BUCKET_NAME=[bucket_name]
- export HS_MINIO_IF_EXTERNAL=true # 声明使用外部对象存储替代衡石minio
```

K8s部署：在部署`hengshi的命名空间下hengshi-sense的configmap中` 修改如下配置项 (以下7个选项都必须要配置)

```shell
data:
  ENABLE_REFERENCE_DATASET: 'true'
  EVEREST_HISTORY_LOG_RESERVED_DAYS: '1'
  ....
  MINIO_ROOT_USER: "[access_key]"
  MINIO_ROOT_PASSWORD: "[secret_access_key]"
  MINIO_SERVER_HOST: "[endpoint]"
  MINIO_SERVER_PORT: "[endpoint_port]" # endpoint是http协议填写80 https填写443
  OBJECT_REGION_CODE: "[region_code]" # region 必须要配置
  OBJECT_ROOT_BUCKET_NAME: "[bucket_name]"
  HS_MINIO_IF_EXTERNAL: true # 声明使用外部对象存储替代衡石minio
```

> 注意：
> 修改参数后需要重新启动HENGSHI SENSE才能生效。
