【问题标题】:AWS credentials for EC2 auto-discovery用于 EC2 自动发现的 AWS 凭证
【发布时间】:2015-08-10 04:10:40
【问题描述】:

根据Hazelcast manual,为了使用 EC2 自动发现,需要在配置文件中提供 AWS 凭证。 当托管在以 IAM 角色启动的 EC2 实例上时,Hazelcast 是否有办法检索临时凭证,而不是使用长期访问密钥(根据 AWS 最佳实践 "Use Temporary Security Credentials (IAM Roles) Instead of Long-Term Access Keys"

【问题讨论】:

    标签: amazon-web-services amazon-ec2 hazelcast


    【解决方案1】:

    我花了一段时间才找到正确的信息。老实说,明确指定 IP 地址也同样有效,除非您的集群包含数百个节点来手动键入所有节点。

    指定 AWS 标签名称/值对是可选的。我有点偏执,我可能会错误地加入另一个集群,最好明确地创建一个这样的资源(服务器)组。

    首先,您需要创建一个具有 Hazelcast 所需权限的 IAM 用户。显然,您不想为此使用您的根用户凭据。

    使用 AWS 控制台。它位于右上角的用户名下拉列表(帐户设置所在的位置)中。单击安全凭据,然后单击组。使用以下策略创建一个组:

    {
      "Version": "xxxxxxx",
      "Statement": [
        {
          "Sid": "xxxxxx",
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeInstances"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
    

    如您所见,Hazelcast 需要的唯一权限是“DescribeInstances”。我偶然发现了它 - 在 Fuad Malikov 的问答线程之一深处。

    其余的都是微不足道的。创建一个 IAM 用户,例如使用该安全组“hazelcast”,并下载(导出)其凭据,您应该将其放入 Hazelcast 配置中,如下所示。我正在使用 Spring,但是与经典的 Hazelcast 配置文件存在一对一的映射关系。或者您可以通过编程方式设置这些属性——Spring 本质上是为我做的。

    <property name="properties">
      <props>
          <prop key="hazelcast.icmp.enabled">true</prop>
      </props>
    </property>
    <property name="join">
        <bean class="com.hazelcast.config.JoinConfig">
            <property name="multicastConfig">
                <bean class="com.hazelcast.config.MulticastConfig">
                    <property name="enabled" value="false"/>
                </bean>
            </property>
            <property name="tcpIpConfig">
                <bean class="com.hazelcast.config.TcpIpConfig">
                    <property name="enabled" value="false"/>
                </bean>    
            </property>
            <property name="awsConfig">
                <bean class="com.hazelcast.config.AwsConfig">
                    <property name="enabled" value="true"/>
                    <property name="region" value="us-west-2"/>
                    <property name="accessKey" value="zzzzzzz"/>
                    <property name="secretKey" value="yyyyyyy"/>
                    <property name="tagKey" value="your-instance-tag-key"/>
                    <property name="tagValue" value="your-instance-tag-value"/>
                </bean>
            </property>
    </property>
    

    【讨论】:

    【解决方案2】:

    目前 Hazelcast 尚不支持 IAM 角色身份验证,但计划在新的发现 SPI 到位后实施。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2016-08-24
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多