mc config host add
pode ter a opção de ignorar a verificação de credenciais.
mc config host add s3-somebucket https://s3.cn-north-1.amazonaws.com.cn XXXXX XXXXXXXXXX S3v4
mc: <ERROR> Unable to initialize new config from the provided credentials. The specified bucket does not exist.
Aqui estão as minhas políticas do s3 iam:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1506154426000",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws-cn:s3:::somebucket/*"
]
},
{
"Sid": "Stmt1506154452000",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws-cn:s3:::somebucket"
]
}
]
}
Na versão antiga do mc, ele não verifica quando adiciono as credenciais.
E eu dou uma permissão muito estrita para minha chave de acesso s3. Então é assim:
A chave de acesso não pode listar o nome do intervalo.
Testado em macOS, Ubuntu 16.04
Você pode fornecer --api s3v4
diretamente e não deve chamar o caminho da chamada de validação.
@ tru2dagame Fechando este problema conforme respondido. Sinta-se à vontade para reabrir o problema se você sentir o contrário.
A resposta é um pouco confusa, pois (https://docs.minio.io/docs/minio-client-complete-guide) especifica s3v4
como o padrão. Usar a opção --api
explicitamente funcionou para mim (macos mc versão 2018-03-25T01). Sem a opção, vejo o mesmo erro relatado aqui.
@rbetts se a opção --api
é fornecida, a verificação de credencial é ignorada. Se você não especificar a opção, ele fará a verificação que está falhando no seu caso. Analisará como adicionar a opção na documentação
De que autorização exata mc
precisa para funcionar sem o parâmetro --api s3v4
? Eu dou a autorização de usuário s3 abaixo, mas ainda não está funcionando.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws-cn:s3:::<my-bucket>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws-cn:s3:::<my-bucket>/*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws-cn:s3:::<my-bucket>"
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
Usei o comando assim e recebi a mensagem de erro abaixo:
$ docker run -it --entrypoint=/bin/sh minio/mc:RELEASE.2018-05-25T20-20-15Z
$ mc config host add s3 <endpoint> <key> <secret>; mc ls s3/<my-bucket>
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
mc: <ERROR> Unable to initialize new config from the provided credentials. The specified bucket does not exist.
mc: <ERROR> Unable to stat `<my-bucket>`. Requested file `<my-bucket>` not found
E se eu adicionar o parâmetro --api s3v4
tudo funcionará bem.
Você pode fornecer o --api s3v4 diretamente e ele não deve chamar o caminho da chamada de validação.
Isso funcionou para mim. Mas é extremamente confuso e impossível de entender sem julgamento ou sem visitar este assunto.
mc config host add
pode ter uma explicação perto de --api
argumento, dizendo que impediria a sondagem ativa.
Adicionando também --debug
outputs * nothing *, o comando apenas olha para mim com os olhos vazios, por mais de um minuto ..: /
Comentários muito úteis
Você pode fornecer
--api s3v4
diretamente e não deve chamar o caminho da chamada de validação.