Конфигурация IAM для доступа к jgit на S3
Я пытаюсь создать разрешения IAM, чтобы jgit мог получить доступ к каталогу в одном из моих сегментов.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<mybucket>/<mydir>/*"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::<mybucket>/<mydir>"]
}
]
}
К сожалению, это выдает ошибку. Я не уверен, какие еще действия должны произойти, чтобы это сработало. (Немного нового в IAM).
Caused by: java.io.IOException: Reading of '<mydir>/packed-refs' failed: 403 Forbidden
at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:519)
at org.eclipse.jgit.transport.AmazonS3.get(AmazonS3.java:289)
at org.eclipse.jgit.transport.TransportAmazonS3$DatabaseS3.open(TransportAmazonS3.java:284)
at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.openReader(WalkRemoteObjectDatabase.java:365)
at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.readPackedRefs(WalkRemoteObjectDatabase.java:423)
... 13 more
Caused by: java.io.IOException:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...</RequestId><HostId>...</HostId></Error>
at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:538)
... 17 more
403 Forbidden, очевидно, является ошибкой, но не уверен, что нужно добавить в IAM. Есть идеи?
[Должен был также добавить, что я опробовал это в симуляторе политики, и, похоже, он работал там.]
1 ответ
Ошибка "403" может просто означать, что ключ <mydir>/packed-refs
не существует Согласно https://forums.aws.amazon.com/thread.jspa?threadID=56531:
Amazon S3 вернет ошибку AccessDenied, когда запрошен несуществующий ключ, а запрашивающему не разрешено перечислять содержимое корзины.
Если вы нажимаете в первый раз, эта папка может не существовать, и я думаю, вам понадобится ListBucket
привилегии на родительский каталог, чтобы получить надлежащий NoSuchKey
ответ. Попробуйте изменить это первое утверждение на:
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::<mybucket>/*"]
}
Я также заметил, что jgit push s3 refs/heads/master
работал когда jgit push s3 master
не.
Будущему народу: если все, что вы хотите сделать, это настроить корзину git-репозиториев со своим собственным пользователем, то следующая политика безопасности кажется достаточно хорошей:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucketname>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*"
]
}
]
}