配置云服务器的访问策略
引导式阅读
Go
配置云服务器的访问策略
作者
C***
上架时间
2023-11-14 09:10:02

版本说明

本示例配套的SDK版本为:3.0.59及以上版本

配置云服务器的访问策略

本示例展示如何配置云服务器的访问策略

功能介绍

配置云服务器的访问策略

前置条件

1.已 注册 华为云,并完成 实名认证

2.获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK。

3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥

4.已具备开发环境 ,支持Java JDK 1.8及其以上版本。

SDK获取和安装

您可以通过Maven配置所依赖的虚拟私有云服务SDK

具体的SDK版本号请参见 SDK开发中心 (产品类别:虚拟私有云服务)

代码示例

以下代码展示如何配置云服务器的访问策略

import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.exception.ClientRequestException; import com.huaweicloud.sdk.core.exception.ServerResponseException; import com.huaweicloud.sdk.vpc.v2.VpcClient; import com.huaweicloud.sdk.vpc.v2.model.ListPortsRequest; import com.huaweicloud.sdk.vpc.v2.model.ListPortsResponse; import com.huaweicloud.sdk.vpc.v2.model.ListSecurityGroupsRequest; import com.huaweicloud.sdk.vpc.v2.model.ListSecurityGroupsResponse; import com.huaweicloud.sdk.vpc.v2.model.UpdatePortOption; import com.huaweicloud.sdk.vpc.v2.model.UpdatePortRequest; import com.huaweicloud.sdk.vpc.v2.model.UpdatePortRequestBody; import com.huaweicloud.sdk.vpc.v2.model.UpdatePortResponse; import com.huaweicloud.sdk.vpc.v2.region.VpcRegion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; /** * 配置云服务器的访问策略 */ public class VPCPortBindSecurityGroupDemo { private static final Logger logger = LoggerFactory.getLogger(VPCPortBindSecurityGroupDemo.class.getName()); public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份认证为例,运行示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); // 云服务器id String ecsId = "{ecs_id}"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); VpcClient vpcClient = VpcClient.newBuilder() .withCredential(auth) .withRegion(VpcRegion.valueOf("cn-north-4")) .build(); VPCPortBindSecurityGroupDemo demo = new VPCPortBindSecurityGroupDemo(); // 1.通过云服务器的ID查询网卡信息 ListPortsResponse listPortsResponse = demo.listPorts(vpcClient, ecsId); // 2.查询当前已有的安全组信息 ListSecurityGroupsResponse securityGroupsResponse = demo.listSecurityGroups(vpcClient); String portId = listPortsResponse.getPorts().get(0).getId(); String securityGroupId = securityGroupsResponse.getSecurityGroups().get(0).getId(); // 3.为弹性云服务器添加安全组。 demo.updatePort(vpcClient, portId, securityGroupId); } public ListSecurityGroupsResponse listSecurityGroups(VpcClient vpcClient) { ListSecurityGroupsRequest securityGroupsRequest = new ListSecurityGroupsRequest().withLimit(1); ListSecurityGroupsResponse securityGroupsResponse = null; try { securityGroupsResponse = vpcClient.listSecurityGroups(securityGroupsRequest); logger.info(securityGroupsResponse.toString()); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } return securityGroupsResponse; } public ListPortsResponse listPorts(VpcClient vpcClient, String ecsId) { ListPortsRequest listPortsRequest = new ListPortsRequest().withDeviceId(ecsId); ListPortsResponse listPortsResponse = null; try { listPortsResponse = vpcClient.listPorts(listPortsRequest); logger.info(listPortsResponse.toString()); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } return listPortsResponse; } public UpdatePortResponse updatePort(VpcClient vpcClient, String portId, String securityGroupId) { UpdatePortRequest request = new UpdatePortRequest() .withPortId(portId) .withBody(new UpdatePortRequestBody() .withPort(new UpdatePortOption() .withSecurityGroups( Arrays.asList(securityGroupId)) )); UpdatePortResponse updatePortResponse = null; try { updatePortResponse = vpcClient.updatePort(request); logger.info(updatePortResponse.toString()); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } return updatePortResponse; } }

您可以在 虚拟私有云VPC服务文档API Explorer 查看具体信息。

修订记录

发布日期 文档版本 修订说明
2021/11/05 1.0 文档首次发布