我正在尝试通过Universe程序包在AWS的DC / OS堆栈上部署应用程序。据我了解,mesos访存器将尝试检索这些资源并将其容器化,如marathon.json中所定义。这些资源是私有的,需要保持私有。它们不是静态的,因此很可能无法使用预签名的url。
我已经在包中定义了资源。当代理尝试解析资源时,他们会收到403。
将uri定义为http://s3domain/bucket/key或https://将返回403。
将uri定义为s3://,而mesos fetcher调用hadoop(否则我们不需要)
尝试使用AWS CLI从代理节点拉出资源的方法起作用。 Mesos提取程序也将获得任何公共资源的成功。
我已经看到了一些使用nginx代理s3并将aws凭证嵌入请求中的解决方案。我看到的唯一其他解决方案是事先将所有内容容器化,并将s3设置为Docker注册表。这些是解决问题的唯一方法吗?
最佳答案
回答为时已晚,但将来可能对其他人有所帮助。
您可以按照以下步骤从mesos / dcos群集访问私有s3存储桶。
Create DCOS / mesos的VPC的VPC端点。
在存储区policy中将该端点用于私有s3存储区。
为了进行测试,请尝试使用mesos节点中的curl访问s3资源,如果有效,那么您就可以了。
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html
关于amazon-web-services - DCOS Mesos代理无法从S3存储桶检索私有(private)资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44416776/