{"id":47143,"date":"2023-12-30T16:23:02","date_gmt":"2022-11-08T07:27:51","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/"},"modified":"2024-05-04T16:02:12","modified_gmt":"2024-05-04T08:02:12","slug":"%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/","title":{"rendered":"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09"},"content":{"rendered":"<p>AWS\u57282022\u5e747\u670812\u65e5\u5ba3\u5e03\uff0c\u4ed6\u4eec\u5c06\u52a0\u5165FIWARE\u57fa\u91d1\u4f1a\uff0c\u5e76\u5728\u667a\u6167\u57ce\u5e02\u5f00\u53d1\u65b9\u9762\u5c55\u5f00\u5408\u4f5c\u3002\u8fd9\u4e2a\u6d88\u606f\u4e5f\u57282022\u5e749\u670814\u65e5\u81f315\u65e5\u7684FIWARE\u5168\u7403\u5cf0\u4f1a\u4e0a\u8ba8\u8bba\u8fc7\u3002<\/p>\n<p>\u4f5c\u4e3a\u5176\u4e2d\u7684\u4e00\u90e8\u5206\uff0caws-stf \u5df2\u7ecf\u4ece AWS \u4e0a\u53d1\u5e03\u3002STF\uff08\u667a\u80fd\u9886\u57df\u6846\u67b6\uff09\u662f\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa FIWARE \u751f\u6001\u7cfb\u7edf\u7684\u5de5\u5177\u5305\uff0c\u5b83\u4f7f\u7528 AWS CDK \u5728 TypeScript \u548c Python \u7b49\u8bed\u8a00\u4e2d\u4ee5\u58f0\u660e\u5f0f\u7684\u65b9\u5f0f\u5b9a\u4e49\u590d\u6742\u7684\u57fa\u7840\u8bbe\u65bd\uff0c\u5e76\u80fd\u591f\u8f7b\u677e\u5730\u542f\u52a8\u73af\u5883\u3002<\/p>\n<p>\u6240\u4ee5\u8fd9\u6b21\uff0c\u6211\u4eec\u6253\u7b97\u4f7f\u7528aws-stf\u5728AWS\u4e0a\u642d\u5efaFIWARE\u751f\u6001\u7cfb\u7edf\uff0c\u6765\u786e\u8ba4\u5b9e\u9645\u4e0a\u4f1a\u6784\u5efa\u51fa\u600e\u6837\u7684\u73af\u5883\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7ce3913a08637a69e1ce\/3-0.png%3Fraw%3Dtrue\" alt=\"STF core scorpio\" \/><\/div>\n<blockquote><p>\u6765\u6e90\uff1aNEC Scorpio Broker\u4f7f\u7528\u7684\u667a\u80fd\u9886\u57df\u6846\u67b6\u6838\u5fc3 &#8211; STF Core<\/p><\/blockquote>\n<h1>\u9a8c\u8bc1\u73af\u5883<\/h1>\n<p>\u672c\u6b21\u9a8c\u8bc1\u662f\u5728\u4ee5\u4e0b\u73af\u5883\u4e2d\u8fdb\u884c\u7684\u3002\u8bf7\u786e\u4fddaws cli\u548cnode.js\u5df2\u7ecf\u5b89\u88c5\u597d\u3002\u8fd8\u8bf7\u5feb\u901f\u8bbe\u7f6eAWS\u7684\u8ba4\u8bc1\u4fe1\u606f\uff08\u7531\u4e8e\u6211\u89c9\u5f97\u9ebb\u70e6\uff0c\u6211\u4f7f\u7528\u4e86\u4e00\u4e2a\u62e5\u6709AdministratorAccess\u6743\u9650\u7684\u8d26\u6237\uff09\u3002<\/p>\n<div>\n<div class=\"post-table\">\u30c4\u30fc\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3AWS CLIaws-cli\/2.7.31 Python\/3.10.6 Darwin\/20.6.0 source\/x86_64 prompt\/offnode.jsv16.17.0<\/div>\n<\/div>\n<pre class=\"post-pre\"><code><span class=\"nn\">[default]<\/span>\r\n<span class=\"py\">output<\/span> <span class=\"p\">=<\/span> <span class=\"s\">json<\/span>\r\n<span class=\"py\">region<\/span> <span class=\"p\">=<\/span> <span class=\"s\">us-west-2<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"nn\">[default]<\/span>\r\n<span class=\"py\">aws_secret_access_key<\/span> <span class=\"p\">=<\/span> <span class=\"s\">xxxxxxxx<\/span>\r\n<span class=\"py\">aws_access_key_id<\/span> <span class=\"p\">=<\/span> <span class=\"s\">xxxxxxxx<\/span>\r\n<\/code><\/pre>\n<h2>\u8bf7\u6ce8\u610f<\/h2>\n<p>\u622a\u81f32022\u5e749\u670818\u65e5\uff0c\u9009\u62e9us-west-2\uff08\u4fc4\u52d2\u5188\u5dde\uff09\u5730\u533a\u662f\u6bd4\u8f83\u660e\u667a\u7684\u9009\u62e9\u3002\u4f7f\u7528Scorpio\u7248\u672c\u7684STF\u5c06\u5728\u5185\u90e8\u542f\u52a8AWS Aurora Serverless\u6216Amazon Managed Streaming for Apache Kafka\uff0c\u4f46\u5728\u5317\u5f17\u5409\u5c3c\u4e9a\u3001\u4fc4\u4ea5\u4fc4\u3001\u5317\u52a0\u5229\u798f\u5c3c\u4e9a\u548c\u4e1c\u4eac\u7b49\u5730\u533a\uff0c\u53ef\u80fd\u4f1a\u53d1\u751f\u4ee5\u4e0b\u9519\u8bef\uff0c\u5728\u6784\u5efa\u8fc7\u7a0b\u4e2d\u5931\u8d25\u5e76\u56de\u6eda\u3002\u8fd9\u662f\u56e0\u4e3a\u8fd9\u4e9b\u533a\u57df\u7684\u53ef\u7528\u533a\u4e0d\u652f\u6301Aurora Serverless\u6216MSK\u7684\u4e00\u4e9b\u539f\u56e0\u3002<\/p>\n<p>\u60a8\u53ef\u4ee5\u4fee\u6539CDK\u7f51\u7edc\u76f8\u5173\u7684\u4ee3\u7801\uff0c\u4ee5\u4fbf\u80fd\u591f\u6307\u5b9a\u9002\u5408\u8be5\u5730\u533a\u7684\u5408\u9002\u53ef\u7528\u533a\uff0c\u8fd9\u53ef\u80fd\u4f1a\u66f4\u597d\u3002\u4f46\u5728\u8fd9\u6b21\u9a8c\u8bc1\u4e2d\uff0c\u6211\u4eec\u5c06\u7ee7\u7eed\u5728\u4ee3\u7801\u4e2d\u4e0d\u505a\u4fee\u6539\uff0c\u5e76\u5728us-west-2\u5730\u533a\u8fdb\u884c\u9a8c\u8bc1\u3002<\/p>\n<blockquote><p>\u60a8\u7684\u5b50\u7f51\u7ec4\u53ea\u6709\u4e00\u4e2a\u7531Aurora Serverless\u652f\u6301\u7684\u53ef\u7528\u533aus-west-1a\u3002<\/p><\/blockquote>\n<blockquote><p>\u4e00\u4e2a\u6216\u591a\u4e2a\u5b50\u7f51\u5c5e\u4e8e\u4e0d\u652f\u6301\u7684\u53ef\u7528\u533a\uff1a[us-east-1b]\u3002\uff08\u670d\u52a1\uff1aKafka\uff0c\u72b6\u6001\u7801\uff1a400\uff09<\/p><\/blockquote>\n<h1>\u542f\u52a8STF\u5806\u6808<\/h1>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u5feb\u901f\u542f\u52a8STF\u5806\u6808\u3002<br \/>\nFIWARE\u751f\u6001\u7cfb\u7edf\u7684\u6838\u5fc3\u662f\u7ecf\u5e38\u4f7f\u7528\u7684NGSI v1\/v2\u517c\u5bb9\u7684FIWARE Orion\uff0c\u4ee5\u53ca\u5176\u652f\u6301NGSI-LD\u7684\u7248\u672corion-ld\uff0c\u8fd8\u6709\u4e3aNGSI-LD\u7f16\u5199\u7684Scorpio\u548cstellio\u7b49\u591a\u4e2a\u7ec4\u4ef6\u3002STF\u5728\u6982\u5ff5\u4e0a\u652f\u6301\u591a\u4e2a\u4ee3\u7406\u7ec4\u4ef6\uff0c\u4f46\u622a\u81f39\u670818\u65e5\uff0c\u53ef\u4f7f\u7528Scorpio\u548cAWS\u65e0\u670d\u52a1\u5668\u670d\u52a1\u7684\u7ec4\u5408\u53d1\u5e03\u7248\u672c\u3002<br \/>\n\u73b0\u5728\u8ba9\u6211\u4eec\u5feb\u901f\u542f\u52a8STF\u5806\u6808\u5427\u3002<\/p>\n<blockquote><p>\u6211\u4eec\u63d0\u4f9b\u4ee5\u4e0bSTF\u6838\u5fc3\u4e0d\u540c\u98ce\u5473\u7684\u5217\u8868\uff0c\u5176\u4e2d\u5305\u62ec\u591a\u4e2a\u53ef\u7528\u7684FIWARE\u4e0a\u4e0b\u6587\u7ecf\u7eaa\u4eba\u5b9e\u73b0\u3002<\/p><\/blockquote>\n<h2>\u83b7\u53d6aws-stf\uff08Scorpio\u7248\u672c\uff09<\/h2>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf<span class=\"nv\">$ <\/span>git clone https:\/\/github.com\/aws-samples\/aws-stf-core-scorpio.git\r\nnmatsui@:aws-stf<span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>aws-stf-core-scorpio\/\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>\r\n<\/code><\/pre>\n<h2>CDK\u5e93\u7684\u5b89\u88c5<\/h2>\n<p>\u57289\u670818\u65e5\u65f6\uff0c\u5bf9\u4e8enode.js\u7684CDK\uff0c\u6700\u65b0\u7248\u672c\u662f2.42.0\u3002\u4f46\u662f\uff0c\u6211\u4eec\u51b3\u5b9a\u5728\u672c\u5730\u5b89\u88c5\u548c\u4f7f\u7528\u6307\u5b9a\u7684\u7248\u672c2.13.0\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>npm <span class=\"nb\">install\r\n<\/span>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>npx cdk <span class=\"nt\">--version<\/span>\r\n2.13.0 <span class=\"o\">(<\/span>build b0b744d<span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<h2>\u51c6\u5907CDK<\/h2>\n<p>\u9996\u5148\u6267\u884cbootstrap\uff0c\u5c06\u6240\u9700\u7684CDK\u8d44\u4ea7\u51c6\u5907\u5728\u6307\u5b9a\u7684\u5730\u533a\u4e0a\u3002\u4ee5\u540e\u4e0d\u9700\u8981\u518d\u6b21\u6267\u884cbootstrap\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>npx cdk bootstrap\r\n \u23f3  Bootstrapping environment aws:\/\/xxxxxxxxxxxx\/us-west-2...\r\nTrusted accounts <span class=\"k\">for <\/span>deployment: <span class=\"o\">(<\/span>none<span class=\"o\">)<\/span>\r\nTrusted accounts <span class=\"k\">for <\/span>lookup: <span class=\"o\">(<\/span>none<span class=\"o\">)<\/span>\r\nUsing default execution policy of <span class=\"s1\">'arn:aws:iam::aws:policy\/AdministratorAccess'<\/span><span class=\"nb\">.<\/span> Pass <span class=\"s1\">'--cloudformation-execution-policies'<\/span> to customize.\r\nCDKToolkit: creating CloudFormation changeset...\r\n\r\n \u2705  Environment aws:\/\/xxxxxxxxxxxx\/us-west-2 bootstrapped.\r\n<\/code><\/pre>\n<h2>STF\u5806\u6808\u7684\u90e8\u7f72<\/h2>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u5c06\u90e8\u7f72\u4e3b\u8981\u7684STF\u5806\u6808\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u5927\u7ea6\u9700\u898130\u523045\u5206\u949f\uff0c\u6240\u4ee5\u8bf7\u8010\u5fc3\u7b49\u5f85\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>npx cdk deploy\r\n\r\n\u2728  Synthesis <span class=\"nb\">time<\/span>: 6.4s\r\n\r\nStfCore: deploying...\r\n<span class=\"o\">[<\/span>0%] start: Publishing 4a575666d1c2c6412590d2a56f328e040a81ad1ef59aecee31ae9b393d05f659:current_account-current_region\r\n\r\n \u2705  StfCore\r\n\r\n\u2728  Deployment <span class=\"nb\">time<\/span>: 2264.27s\r\n\r\nOutputs:\r\nStfCore.StfCoreEndpoint <span class=\"o\">=<\/span> https:\/\/xxxxxxxx.execute-api.us-west-2.amazonaws.com\r\nStfCore.StfCoreIotQueueArn <span class=\"o\">=<\/span> arn:aws:sqs:us-west-2:xxxxxxxxxxxx:StfIoTQueue-us-west-2\r\nStack ARN:\r\narn:aws:cloudformation:us-west-2:xxxxxxxxxxxx:stack\/StfCore\/490d76b0-36d0-11ed-bd00-029c3f5cbc51\r\n\r\n\u2728  Total <span class=\"nb\">time<\/span>: 2270.67s\r\n<\/code><\/pre>\n<h1>\u786e\u8ba4CDK\u542f\u52a8\u73af\u5883<\/h1>\n<p>\u8ba9\u6211\u4eec\u6765\u786e\u8ba4\u4e00\u4e0b\u7531CDK\u6784\u5efa\u7684\u73af\u5883\u3002\u5b9e\u9645\u4e0a\uff0c\u5728\u8fd9\u4e2a\u9636\u6bb5\uff0c\u6211\u4eec\u4e0d\u4ec5\u542f\u52a8\u4e86\u7ecf\u7eaa\u4eba\u529f\u80fd\uff0c\u8fd8\u542f\u52a8\u4e86\u8fde\u63a5\u7269\u8054\u7f51\u8bbe\u5907\u548c\u7ecf\u7eaa\u4eba\u7684\u5806\u6808\uff08STF IoT\uff09\u3002\u4f46\u662f\u8fd9\u6b21\u6211\u4eec\u53ea\u786e\u8ba4\u4e0e\u7ecf\u7eaa\u4eba\u529f\u80fd\u6709\u5173\u7684\u73af\u5883\u3002<\/p>\n<h2>\u4e91\u5f62\u6210\u5806\u53e0<\/h2>\n<p>AWS CDK\u4f1a\u6839\u636eAWS CloudFormation\u6a21\u677f\u751f\u6210\u5e76\u90e8\u7f72AWS\u4e0a\u7684\u8d44\u6e90\u3002\u901a\u8fc7\u89c2\u5bdf\uff0c\u6211\u4eec\u53ef\u4ee5\u53d1\u73b0STF\u5806\u6808\u5b9e\u9645\u4e0a\u7531ScorpioServerlessNestedStack\u548cIoTNestedStack\u7ec4\u6210\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws cloudformation list-stacks <span class=\"nt\">--stack-status-filter<\/span> CREATE_COMPLETE <span class=\"nt\">--query<\/span> <span class=\"s2\">\"StackSummaries[].StackName\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"s2\">\"StfCore-IoTNestedStackIoTNestedStackResource15FB5E08-19AKRXNQCBVG\"<\/span>,\r\n    <span class=\"s2\">\"StfCore-ScorpioServerlessNestedStackScorpioServerlessNestedStackResourceF6005A66-1ASHOUNTIXFG0\"<\/span>,\r\n    <span class=\"s2\">\"StfCore\"<\/span>,\r\n    <span class=\"s2\">\"CDKToolkit\"<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<h2>AWS Aurora \u65e0\u670d\u52a1\u5668\u7248<\/h2>\n<p>\u8fd9\u6b21\u4f7f\u7528\u7684Scorpio\u5728\u5185\u90e8\u4f9d\u8d56\u4e8eApache Kafka\u548cPostgreSQL\u3002STF\u4f5c\u4e3a\u8fd9\u4e2aPostgreSQL\uff0c\u4f7f\u7528AWS Aurora Serverless\u6765\u542f\u52a8\u548c\u4f7f\u7528\u3002\u901a\u8fc7\u4f7f\u7528Aurora Serverless\uff0c\u5f53\u8d1f\u8f7d\u8f83\u4f4e\u65f6\uff0c\u6210\u672c\u8f83\u4f4e\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws rds describe-db-clusters <span class=\"nt\">--query<\/span> <span class=\"s2\">\"DBClusters[].{name:DatabaseName,engine:Engine,version:EngineVersion,mode:EngineMode}\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"o\">{<\/span>\r\n        <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"scorpio\"<\/span>,\r\n        <span class=\"s2\">\"engine\"<\/span>: <span class=\"s2\">\"aurora-postgresql\"<\/span>,\r\n        <span class=\"s2\">\"version\"<\/span>: <span class=\"s2\">\"10.18\"<\/span>,\r\n        <span class=\"s2\">\"mode\"<\/span>: <span class=\"s2\">\"serverless\"<\/span>\r\n    <span class=\"o\">}<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<h2>\u4e9a\u9a6c\u900a\u6258\u7ba1\u7684Apache Kafka\u6d41\u5904\u7406\u5e73\u53f0<\/h2>\n<p>\u7531\u4e8eScorpio\u4f9d\u8d56\u4e8ekafka\uff0cApache Kafka\u7684\u6258\u7ba1\u670d\u52a1\u5df2\u7ecf\u542f\u52a8\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u6210\u672c\u95ee\u9898\uff0c\u6211\u8ba4\u4e3a\u53ea\u542f\u52a8\u4e862\u4e2a\u6700\u5c0f\u8282\u70b9\u5927\u5c0f\u7684broker\u3002\uff08\u5982\u679c\u6210\u672c\u662f\u95ee\u9898\u7684\u8bdd\uff0c\u6211\u60f3\u4e5f\u53ef\u4ee5\u8003\u8651\u4f7f\u7528MSK Serverless\uff0c\u4f46\u662f\u53ef\u80fd\u6709\u65e0\u6cd5\u4f7f\u7528Serverless\u7684\u539f\u56e0\u5427\uff1f\uff09<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws kafka list-clusters <span class=\"nt\">--query<\/span> <span class=\"s2\">\"ClusterInfoList[].{name:ClusterName,kafkaVersion:CurrentBrokerSoftwareInfo.KafkaVersion,numberOfBrokerNodes:NumberOfBrokerNodes,size:BrokerNodeGroupInfo.InstanceType}\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"o\">{<\/span>\r\n        <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"ScorpioCluster\"<\/span>,\r\n        <span class=\"s2\">\"kafkaVersion\"<\/span>: <span class=\"s2\">\"2.8.1\"<\/span>,\r\n        <span class=\"s2\">\"numberOfBrokerNodes\"<\/span>: 2,\r\n        <span class=\"s2\">\"size\"<\/span>: <span class=\"s2\">\"kafka.t3.small\"<\/span>\r\n    <span class=\"o\">}<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<h2>\u5929\u874e\u5ea7\u7684\u672c\u8d28<\/h2>\n<p>Scorpio\u672c\u4f53\u4f3c\u4e4e\u4f5c\u4e3aFargate\u4e0a\u7684\u5bb9\u5668\u542f\u52a8\u3002\u770b\u8d77\u6765\u662f\u4ee5active-active\u65b9\u5f0f\u8fd0\u884c\u4e86\u4e24\u4e2a\u4efb\u52a1\u3002\u6211\u4eec\u4f7f\u7528\u7684\u662f\u4f4d\u4e8eAmazon ECR\u4e0a\u7684\u81ea\u5b9a\u4e49\u955c\u50cfscorpiobroker\/scorpio-aio\uff0c\u800c\u4e0d\u662fScorpio\u7684\u5b98\u65b9Docker\u955c\u50cf\u3002\u6211\u4eec\u6ca1\u6709\u786e\u8ba4\u8fd9\u4e2a\u81ea\u5b9a\u4e49\u955c\u50cf\u4e0e\u5b98\u65b9\u955c\u50cf\u4e4b\u95f4\u662f\u5426\u6709\u5dee\u5f02\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">ECS_CLUSTER<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws ecs list-clusters <span class=\"nt\">--query<\/span> <span class=\"s2\">\"clusterArns[0]\"<\/span> <span class=\"nt\">--output<\/span> text<span class=\"si\">)<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">ECS_SERVICE<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws ecs list-services <span class=\"nt\">--cluster<\/span> <span class=\"nv\">$ECS_CLUSTER<\/span> <span class=\"nt\">--query<\/span> <span class=\"s2\">\"serviceArns[0]\"<\/span> <span class=\"nt\">--output<\/span> text<span class=\"si\">)<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">ECS_TASK<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws ecs list-tasks <span class=\"nt\">--cluster<\/span> <span class=\"nv\">$ECS_CLUSTER<\/span> <span class=\"nt\">--service-name<\/span> <span class=\"nv\">$ECS_SERVICE<\/span> <span class=\"nt\">--query<\/span> <span class=\"s2\">\"taskArns[0]\"<\/span> <span class=\"nt\">--output<\/span> text<span class=\"si\">)<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws ecs describe-services <span class=\"nt\">--cluster<\/span> <span class=\"nv\">$ECS_CLUSTER<\/span> <span class=\"nt\">--services<\/span> <span class=\"nv\">$ECS_SERVICE<\/span> <span class=\"nt\">--query<\/span> <span class=\"s2\">\"services[].{launchType:launchType,desiredCount:desiredCount,runningCount:runningCount}\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"o\">{<\/span>\r\n        <span class=\"s2\">\"launchType\"<\/span>: <span class=\"s2\">\"FARGATE\"<\/span>,\r\n        <span class=\"s2\">\"desiredCount\"<\/span>: 2,\r\n        <span class=\"s2\">\"runningCount\"<\/span>: 2\r\n    <span class=\"o\">}<\/span>\r\n<span class=\"o\">]<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws ecs describe-tasks <span class=\"nt\">--cluster<\/span> <span class=\"nv\">$ECS_CLUSTER<\/span> <span class=\"nt\">--tasks<\/span> <span class=\"nv\">$ECS_TASK<\/span> <span class=\"nt\">--query<\/span> <span class=\"s2\">\"tasks[].{containers:containers[].{image:image,status:lastStatus},cpu:cpu,memory:memory}\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"o\">{<\/span>\r\n        <span class=\"s2\">\"containers\"<\/span>: <span class=\"o\">[<\/span>\r\n            <span class=\"o\">{<\/span>\r\n                <span class=\"s2\">\"image\"<\/span>: <span class=\"s2\">\"public.ecr.aws\/scorpiobroker\/scorpio-aio:latest\"<\/span>,\r\n                <span class=\"s2\">\"status\"<\/span>: <span class=\"s2\">\"RUNNING\"<\/span>\r\n            <span class=\"o\">}<\/span>\r\n        <span class=\"o\">]<\/span>,\r\n        <span class=\"s2\">\"cpu\"<\/span>: <span class=\"s2\">\"512\"<\/span>,\r\n        <span class=\"s2\">\"memory\"<\/span>: <span class=\"s2\">\"2048\"<\/span>\r\n    <span class=\"o\">}<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<p>\u53e6\u5916\uff0cScorpio\u7684\u56fe\u50cf\u8c8c\u4f3c\u5728parameters.ts\u4e2d\u6307\u5b9a\u3002\u65e0\u8bba\u662f\u5b98\u65b9\u56fe\u50cf\uff0c\u8fd8\u662f\u80fd\u5728Aurora Serverless\u6216MSK\u4e0a\u8fd0\u884c\u5417\uff1f<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nb\">Parameters<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">image_context_broker<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">public.ecr.aws\/scorpiobroker\/scorpio-aio:latest<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">smart_data_model_url<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">shadow_prefix<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Stf<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">timeout<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">0<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Timeout for the API call in the Lambda that sync with context broker. Has to be a string to pass it in env variable<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u4e9a\u9a6c\u900aAPI\u7f51\u5173<\/h2>\n<p>\u6700\u540e\u662fAmazon API Gateway\u3002\u5b83\u5c06\u516c\u5f00\u4e00\u4e2a\u7aef\u70b9\u5728\u4e92\u8054\u7f51\u4e0a\uff0c\u5e76\u5c06\u8bf7\u6c42\u8def\u7531\u5230Scoprio\u7684\u5bb9\u5668\u3002<br \/>\n\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\/iot\/things\/*\u7684GET\u3001POST\u548cDELETE\u8bf7\u6c42\u662f\u7531STF IoT\u5806\u6808\u521b\u5efa\u7684\u7528\u4e8eIoT\u8bbe\u5907\u7684\u8def\u7531\uff0c\u8fd9\u91cc\u4e0d\u8fdb\u884c\u8be6\u7ec6\u89e3\u91ca\u3002\u5176\u4ed6\u7684\u8bf7\u6c42\u5c06\u5339\u914d\u5230ANY \/{proxy+}\u8def\u7531\uff0c\u5e76\u901a\u8fc7VPCLink\u8def\u7531\u5230Scorpio\u7684\u5bb9\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">API_ID<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws apigatewayv2 get-apis <span class=\"nt\">--query<\/span> <span class=\"s2\">\"Items[0].ApiId\"<\/span> <span class=\"nt\">--output<\/span> text<span class=\"si\">)<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>aws apigatewayv2 get-routes <span class=\"nt\">--api-id<\/span> <span class=\"nv\">$API_ID<\/span> <span class=\"nt\">--query<\/span> <span class=\"s2\">\"Items[].RouteKey\"<\/span>\r\n<span class=\"o\">[<\/span>\r\n    <span class=\"s2\">\"GET \/iot\/things\"<\/span>,\r\n    <span class=\"s2\">\"GET \/iot\/things\/{thingName}\"<\/span>,\r\n    <span class=\"s2\">\"DELETE \/iot\/things\/{thingName}\"<\/span>,\r\n    <span class=\"s2\">\"ANY \/{proxy+}\"<\/span>,\r\n    <span class=\"s2\">\"POST \/iot\/things\"<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u5c1d\u8bd5\u5411 API Gateway \u7684\u7aef\u70b9\u53d1\u9001 GET \u8bf7\u6c42\uff0c\u8def\u5f84\u5206\u522b\u4e3a \/actuator\/info \u548c \/actuator\/health\u3002\u5f53 Scorpio \u63a5\u6536\u5230\u8fd9\u4e9b\u8bf7\u6c42\u65f6\uff0c\u4f5c\u4e3a\u5185\u90e8\u4f7f\u7528\u7684 Spring Boot \u5c06\u8fd4\u56de\u6784\u5efa\u4fe1\u606f\u548c\u8fd0\u884c\u72b6\u51b5\u3002<\/p>\n<pre class=\"post-pre\"><code>nmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">ENDPOINT<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws apigatewayv2 get-apis <span class=\"nt\">--query<\/span> <span class=\"s2\">\"Items[0].ApiEndpoint\"<\/span> <span class=\"nt\">--output<\/span> text<span class=\"si\">)<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>curl <span class=\"nt\">-sS<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$ENDPOINT<\/span><span class=\"s2\">\/actuator\/info\"<\/span> | jq <span class=\"nb\">.<\/span>\r\n<span class=\"o\">{<\/span>\r\n  <span class=\"s2\">\"build\"<\/span>: <span class=\"o\">{<\/span>\r\n    <span class=\"s2\">\"artifact\"<\/span>: <span class=\"s2\">\"AllInOneRunner\"<\/span>,\r\n    <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"AllInOneRunner\"<\/span>,\r\n    <span class=\"s2\">\"time\"<\/span>: <span class=\"s2\">\"2022-09-08T13:51:46.913Z\"<\/span>,\r\n    <span class=\"s2\">\"version\"<\/span>: <span class=\"s2\">\"1.1.0-SNAPSHOT\"<\/span>,\r\n    <span class=\"s2\">\"group\"<\/span>: <span class=\"s2\">\"eu.neclab.ngsildbroker\"<\/span>\r\n  <span class=\"o\">}<\/span>\r\n<span class=\"o\">}<\/span>\r\nnmatsui@:aws-stf-core-scorpio <span class=\"o\">(<\/span>main <span class=\"o\">=)<\/span><span class=\"nv\">$ <\/span>curl <span class=\"nt\">-sS<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$ENDPOINT<\/span><span class=\"s2\">\/actuator\/health\"<\/span> | jq <span class=\"nb\">.<\/span>\r\n<span class=\"o\">{<\/span>\r\n  <span class=\"s2\">\"status\"<\/span>: <span class=\"s2\">\"UP\"<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h1>\u5411Amazon API Gateway\u6dfb\u52a0\u4ee4\u724c\u8ba4\u8bc1<\/h1>\n<p>\u597d\u4e86\uff0c\u6211\u4eec\u5df2\u7ecf\u786e\u8ba4Scorpio\u53ef\u4ee5\u6b63\u5e38\u8fd0\u884c\u5e76\u8fde\u63a5\u5230\u4e92\u8054\u7f51\u3002\u4f46\u662f\uff0c\u7ecf\u7eaa\u4eba\u5728\u4e92\u8054\u7f51\u4e0a\u4ee5\u5b9e\u65f6\u516c\u5f00\u7684\u65b9\u5f0f\u5b58\u5728\uff0c\u867d\u7136\u662f\u4e3a\u4e86\u9a8c\u8bc1\uff0c\u4f46\u786e\u5b9e\u6709\u95ee\u9898\u3002\u5728NEC Scorpio\u7ecf\u7eaa\u4eba\u5806\u6808\u7684README\u4e2d\uff0c\u4e5f\u63d0\u5230\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u4f7f\u7528\u4e4b\u524d\u8981\u8003\u8651\u8bbf\u95ee\u63a7\u5236\u7684\u95ee\u9898\u3002<\/p>\n<blockquote><p>\u5728\u5c06\u6b64\u5806\u6808\u7528\u4e8e\u751f\u4ea7\u4e4b\u524d\uff0c\u8bf7\u8003\u8651\u6dfb\u52a0\u4e00\u79cd\u673a\u5236\u6765\u63a7\u5236\u548c\u7ba1\u7406\u5bf9StfCoreEndpoint\u7684\u8bbf\u95ee\u3002<\/p><\/blockquote>\n<p>\u672c\u6765\uff0cGET\u8bf7\u6c42\u5bf9\u4e8e\u5b9e\u4f53\u662f\u65e0\u9650\u5236\u7684\uff0c\u4f46\u662fPOST\/PATCH\/DELETE\u8bf7\u6c42\u9700\u8981\u5bf9\u6bcf\u4e2a\u8bf7\u6c42\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u5e76\u4e14\u53ea\u5141\u8bb8\u6388\u6743\u7528\u6237\u8fdb\u884c\u8bbf\u95ee\uff0c\u8fd9\u6837\u53ef\u4ee5\u5236\u5b9a\u8ba4\u8bc1\u548c\u6388\u6743\u7b56\u7565\u5e76\u5b9e\u73b0\u3002\u4f46\u662f\uff0c\u6b64\u6b21\u4e3a\u4e86\u9a8c\u8bc1\u76ee\u7684\uff0c\u6211\u4eec\u5c06\u5728\u6240\u6709\u8def\u7531\u4e0a\u5b9e\u65bd\u7b80\u6613\u7684\u4ee4\u724c\u8ba4\u8bc1\u3002<\/p>\n<h2>\u6ce8\u518c\u7528\u4e8e\u8ba4\u8bc1\u7684Lambda\u51fd\u6570<\/h2>\n<p>\u6ce8\u518c\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684\u7528\u4e8e\u9a8c\u8bc1\u7684Lambda\u51fd\u6570\uff0c\u7528\u4e8e\u68c0\u67e5\u8bf7\u6c42\u4e2d\u7684&#8221;authorization&#8221;\u5934\u90e8\u662f\u5426\u5305\u542b\u7279\u5b9a\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<details>\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u7ffb\u8bd1\uff0c\u5e76\u4e14\u53ea\u63d0\u4f9b\u4e00\u79cd\u9009\u62e9\uff1a\u6ce8\u518c\u7528\u4e8e\u8ba4\u8bc1\u7684 Lambda \u51fd\u6570<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export TOKEN=your_token<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export REGION=$(aws configure get region &#8211;output text)<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export ACCOUNT=$(aws sts get-caller-identity &#8211;query &#8220;Account&#8221; &#8211;output text)<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ aws iam create-role &#8211;role-name lambda-auth-role \\<br \/>\n&#8211;assume-role-policy-document &#8216;{&#8220;Version&#8221;: &#8220;2012-10-17&#8243;,&#8221;Statement&#8221;: [{ &#8220;Effect&#8221;: &#8220;Allow&#8221;, &#8220;Principal&#8221;: {&#8220;Service&#8221;: &#8220;lambda.amazonaws.com&#8221;}, &#8220;Action&#8221;: &#8220;sts:AssumeRole&#8221;}]}&#8217;<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ cat &lt;&lt;__EOF__ &gt; lambda-auth.js<br \/>\nexports.handler = async(event) =&gt; {<br \/>\nlet response = {<br \/>\n&#8220;isAuthorized&#8221;: false<br \/>\n};<\/p>\n<p>if (event.headers.authorization === &#8220;$TOKEN&#8221;) {<br \/>\nresponse = {<br \/>\n&#8220;isAuthorized&#8221;: true<br \/>\n};<br \/>\n}<br \/>\nreturn response;<br \/>\n};<br \/>\n__EOF__<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ zip function.zip lambda-auth.js<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ aws lambda create-function &#8211;function-name lambda-auth \\<br \/>\n&#8211;zip-file fileb:\/\/function.zip \\<br \/>\n&#8211;handler lambda-auth.handler \\<br \/>\n&#8211;runtime nodejs12.x \\<br \/>\n&#8211;role arn:aws:iam::$ACCOUNT:role\/lambda-auth-role<\/p>\n<p>\u5c06\u4e0a\u8ff0\u4ee3\u7801\u6ce8\u518c\u4e3a\u7528\u4e8e\u8ba4\u8bc1\u7684 Lambda \u51fd\u6570<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export TOKEN=your_token<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export REGION=$(aws configure get region &#8211;output text)<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ export ACCOUNT=$(aws sts get-caller-identity &#8211;query &#8220;Account&#8221; &#8211;output text)<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ aws iam create-role &#8211;role-name lambda-auth-role \\<br \/>\n&#8211;assume-role-policy-document &#8216;{&#8220;Version&#8221;: &#8220;2012-10-17&#8243;,&#8221;Statement&#8221;: [{ &#8220;Effect&#8221;: &#8220;Allow&#8221;, &#8220;Principal&#8221;: {&#8220;Service&#8221;: &#8220;lambda.amazonaws.com&#8221;}, &#8220;Action&#8221;: &#8220;sts:AssumeRole&#8221;}]}&#8217;<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ cat &lt;&lt;__EOF__ &gt; lambda-auth.js<br \/>\nexports.handler = async(event) =&gt; {<br \/>\nlet response = {<br \/>\n&#8220;isAuthorized&#8221;: false<br \/>\n};<\/p>\n<p>if (event.headers.authorization === &#8220;$TOKEN&#8221;) {<br \/>\nresponse = {<br \/>\n&#8220;isAuthorized&#8221;: true<br \/>\n};<br \/>\n}<br \/>\nreturn response;<br \/>\n};<br \/>\n__EOF__<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ zip function.zip lambda-auth.js<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ aws lambda create-function &#8211;function-name lambda-auth \\<br \/>\n&#8211;zip-file fileb:\/\/function.zip \\<br \/>\n&#8211;handler lambda-auth.handler \\<br \/>\n&#8211;runtime nodejs12.x \\<br \/>\n&#8211;role arn:aws:iam::$ACCOUNT:role\/lambda-auth-role<\/p>\n<\/details>\n<h2>\u521b\u5efa\u6388\u6743\u8005<\/h2>\n<p>\u5c06\u5df2\u521b\u5efa\u7684Lambda\u51fd\u6570\u6ce8\u518c\u4e3aAmazon API Gateway\u7684\u6388\u6743\u8005\u3002<\/p>\n<details>\u521b\u5efaAuthorizer<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ aws apigatewayv2 create-authorizer \\<br \/>\n&#8211;api-id $API_ID \\<br \/>\n&#8211;authorizer-type REQUEST \\<br \/>\n&#8211;identity-source &#8216;$request.header.Authorization&#8217; \\<br \/>\n&#8211;name lambda-authorizer \\<br \/>\n&#8211;authorizer-uri &#8220;arn:aws:apigateway:$REGION:lambda:path\/2015-03-31\/functions\/arn:aws:lambda:$REGION:$ACCOUNT:function:lambda-auth\/invocations&#8221; \\<br \/>\n&#8211;authorizer-payload-format-version &#8216;2.0&#8217; \\<br \/>\n&#8211;enable-simple-responses<\/details>\n<h2>\u7ed9lambda\u51fd\u6570\u6dfb\u52a0\u6743\u9650<\/h2>\n<p>\u4e3a\u4e86\u8ba9 Amazon API Gateway \u80fd\u591f\u6267\u884c lambda \u51fd\u6570\uff0c\u6388\u4e88\u5176\u6743\u9650\u3002<\/p>\n<details>\u5c06\u6743\u9650\u6dfb\u52a0\u5230Lambda\u51fd\u6570nmatsui@:aws-stf-core-scorpio (main =)$ export AUTHORIZER_ID=$(aws apigatewayv2 get-authorizers &#8211;api-id $API_ID &#8211;query &#8220;Items[?Name==\\`lambda-authorizer\\`].AuthorizerId&#8221; &#8211;output text)<\/p>\n<p>nmatsui@:aws-stf-core-scorpio (main =)$ aws lambda add-permission \\<br \/>\n&#8211;function-name lambda-auth \\<br \/>\n&#8211;statement-id apigateway-invoke-permission-lambda-authorizer \\<br \/>\n&#8211;action lambda:InvokeFunction \\<br \/>\n&#8211;principal apigateway.amazonaws.com \\<br \/>\n&#8211;source-arn &#8220;arn:aws:execute-api:$REGION:$ACCOUNT:$API_ID\/authorizers\/$AUTHORIZER_ID&#8221;<\/p>\n<\/details>\n<h2>\u5728\u6240\u6709\u8def\u7531\u4e2d\u6dfb\u52a0\u6388\u6743\u5668\u3002<\/h2>\n<p>\u7531\u4e8e\u8fd9\u6837\uff0c\u73b0\u5728\u53ef\u4ee5\u4eceAmazon API Gateway\u8c03\u7528authorizer\u7684lambda\u51fd\u6570\uff0c\u56e0\u6b64\u5c06authorizer\u5206\u914d\u7ed9\u6bcf\u4e2a\u8def\u7531\u3002<\/p>\n<details>\u5728\u6240\u6709\u8def\u7531\u4e2d\u6dfb\u52a0authorizer<br \/>\nnmatsui @:aws-stf-core-scorpio\uff08\u4e3b=\uff09$ export ROUTES = $\uff08aws apigatewayv2 get-routes &#8211;api-id $ API_ID &#8211;query &#8220;Items []. RouteId&#8221;&#8211;output text\uff09<br \/>\nnmatsui @:aws-stf-core-scorpio\uff08\u4e3b=\uff09$ for route in $ ROUTES; \u505a<br \/>\naws apigatewayv2 update-route \\<br \/>\n&#8211;api-id $ API_ID \\<br \/>\n&#8211;route-id $ route \\<br \/>\n&#8211;authorization-type CUSTOM \\<br \/>\n&#8211;authorizer-id $ AUTHORIZER_ID<br \/>\n\u505a<\/details>\n<h2>\u5bf9\u4ee4\u724c\u8ba4\u8bc1\u8fdb\u884c\u64cd\u4f5c\u9a8c\u8bc1<\/h2>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u5c06\u786e\u8ba4\u4ee4\u724c\u8ba4\u8bc1\u662f\u5426\u6709\u6548\u3002\u867d\u7136\u53ea\u662f\u6700\u57fa\u672c\u7684\u9a8c\u8bc1\uff0c\u4f46\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e86\uff01<\/p>\n<details>\u6ca1\u6709\u6388\u6743\u5934 \u2192 401 \u672a\u6388\u6743<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -i &#8220;$ENDPOINT\/actuator\/info&#8221;\u7ed3\u679c<br \/>\nHTTP\/2 401<br \/>\ndate: Sun, 18 Sep 2022 08:40:16 GMT<br \/>\ncontent-type: application\/json<br \/>\ncontent-length: 26<br \/>\napigw-requestid: YpbpliAfPHcEPQw=<\/p>\n<p>{&#8220;message&#8221;:&#8221;\u672a\u6388\u6743&#8221;}<\/p>\n<\/details>\n<details>\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u67e5\u8be2 &#8220;$ENDPOINT\/actuator\/info&#8221; \u5e76\u8bbe\u7f6e\u8bf7\u6c42\u5934\u4e2d\u7684 &#8220;Authorization&#8221; \u5b57\u6bb5\u4e3a &#8220;$TOKEN&#8221;\uff1a&#8220;`<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -i &#8220;$ENDPOINT\/actuator\/info&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221;<br \/>\n&#8220;`<\/p>\n<p>\u7ed3\u679c\u8fd4\u56de\uff1a<\/p>\n<p>&#8220;`<br \/>\nHTTP\/2 200<br \/>\ndate: \u65e5, 18 \u4e5d\u6708 2022 08:41:34 GMT<br \/>\ncontent-type: application\/vnd.spring-boot.actuator.v3+json<br \/>\ncontent-length: 157<br \/>\napigw-requestid: Ypb1tg7wPHcEMUw=<br \/>\nvary: Origin<br \/>\nvary: Access-Control-Request-Method<br \/>\nvary: Access-Control-Request-Headers<br \/>\nx-content-type-options: nosniff<br \/>\nx-xss-protection: 1; mode=block<br \/>\ncache-control: no-cache, no-store, max-age=0, must-revalidate<br \/>\npragma: no-cache<br \/>\nexpires: 0<br \/>\nx-frame-options: DENY<\/p>\n<p>{&#8220;build&#8221;:{&#8220;artifact&#8221;:&#8221;AllInOneRunner&#8221;,&#8221;name&#8221;:&#8221;AllInOneRunner&#8221;,&#8221;time&#8221;:&#8221;2022-09-08T13:51:46.913Z&#8221;,&#8221;version&#8221;:&#8221;1.1.0-SNAPSHOT&#8221;,&#8221;group&#8221;:&#8221;eu.neclab.ngsildbroker&#8221;}}<br \/>\n&#8220;`<\/p>\n<\/details>\n<h1>\u786e\u8ba4\u7ecf\u7eaa\u4eba\u529f\u80fd<\/h1>\n<p>\u56e0\u4e3aFIWARE\u7684\u7ecf\u7eaa\u4eba\u529f\u80fd\u5df2\u7ecf\u5e73\u7a33\u5730\u5728AWS\u4e0a\u542f\u52a8\uff0c\u6240\u4ee5\u6211\u4eec\u6765\u7b80\u5355\u9a8c\u8bc1\u4e00\u4e0bEntity\u7684CRUD\u64cd\u4f5c\u3002<br \/>\n\u203b \u5173\u4e8eNGSI-LD\u89c4\u8303\uff0c\u8bf7\u53c2\u8003ETSI\u7684\u5b98\u65b9API\u89c4\u8303\u3001FIWARE\u7684\u9010\u6b65\u6307\u5357\u3001Scorpio\u7684API\u6f14\u793a\u7b49\u3002<\/p>\n<h2>\u4e0a\u4e0b\u6587\u7684\u5904\u7406<\/h2>\n<p>\u4e0eNGSI v2\u4e0d\u540c\uff0cNGSI-LD\u9700\u8981context\u6765\u786e\u5b9a\u7ed3\u6784\u5316\u6570\u636e\u7684\u8bcd\u6c47\u3002\u8fd9\u4e2acontext\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u4e24\u79cd\u65b9\u6cd5\u6765\u6307\u5b9a\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">&#8220;Link&#8221;\u30d8\u30c3\u30c0\u3067context\u3092\u6307\u5b9a\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306b\u306f\u4f55\u3082\u66f8\u304b\u306a\u3044<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">&#8220;Content-Type&#8221;\u30d8\u30c3\u30c0\u306bapplication\/ld+json\u3092\u6307\u5b9a\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306e@context\u3067context\u3092\u6307\u5b9a\u3059\u308b<\/ul>\n<h2>\u5728\u7a7a\u7684\u72b6\u6001\u4e0b\u83b7\u53d6\u5b9e\u4f53\u5217\u8868\u3002<\/h2>\n<p>\u4e0eNGSI v2\u4e0d\u540c\uff0c\u5982\u679c\u4e0d\u5728QueryString\u4e2d\u6307\u5b9atype\uff0c\u5219\u4f1a\u5bfc\u81f4400 Bad Request\u9519\u8bef\u3002<br \/>\n\u53e6\u5916\uff0c\u7531\u4e8eGET\u8bf7\u6c42\u672c\u6765\u4e0d\u5305\u542b\u8bf7\u6c42\u4f53\uff08Request Body\uff09\uff0c\u5e94\u8be5\u53ea\u80fd\u4f7f\u7528Link\u6765\u6307\u5b9a\u65b9\u5f0f\uff0c\u4f46\u662fScorpio\u4f3c\u4e4e\u53ef\u4ee5\u901a\u8fc7\u5728&#8221;Content-Type&#8221;\u5934\u4e2d\u6307\u5b9aapplication\/ld+json\u6765\u4f7f\u8bf7\u6c42\u901a\u8fc7\u3002<\/p>\n<details>\u7528Link\u5934\u90e8\u6307\u5b9a\u4e0a\u4e0b\u6587<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ ENDPOINT \/ ngsi-ld \/ v1 \/ entities \/&#8221; \\<br \/>\n-H\u201c Authorization\uff1a$ TOKEN\u201d \\<br \/>\n-H &#8216;Link\uff1a&lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n-d\u7c7b\u578b=TempSensor \\<br \/>\n| jq\u3002\u54cd\u5e94<br \/>\n[]<\/p>\n<\/details>\n<details>\u5728\u8bf7\u6c42\u4f53\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587\u3002<br \/>\nnmatsui@:aws-stf-core-scorpio (\u4e3b\u8981=) $ curl -sSG $ENDPOINT\/ngsi-ld\/v1\/entities\/ \\<br \/>\n-H &#8220;\u6388\u6743: $ TOKEN&#8221; \\<br \/>\n-H &#8220;\u5185\u5bb9\u7c7b\u578b: application\/ld+json&#8221; \\<br \/>\n-d \u7c7b\u578b=TempSensor \\<br \/>\n| jq\u3002\u54cd\u5e94<br \/>\n[]<\/p>\n<\/details>\n<h2>\u6ce8\u518c\u5b9e\u4f53<\/h2>\n<p>NGSI-LD\u7684\u5b9e\u4f53\u4e0eNGSI v2\u5728\u5916\u89c2\u4e0a\u770b\u8d77\u6765\u76f8\u4f3c\uff0c\u4f46\u5b9e\u4f53\u7684\u6807\u8bc6\u65b9\u6cd5\u548c\u5143\u6570\u636e\u7684\u6dfb\u52a0\u65b9\u5f0f\u4e0d\u540c\u3002\u8bf7\u67e5\u9605NGSI-LD\u7684\u89c4\u8303\u4ee5\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\u3002\u6682\u65f6\u6765\u8bf4\uff0c\u6211\u4eec\u5c06\u5176\u8bbe\u7f6e\u4e3a\u51e0\u4e4e\u4e0eNGSI v2\u76f8\u540c\u7684\u6570\u636e\u6a21\u578b\u3002<\/p>\n<details>\u4ee5Link\u5934\u6307\u5b9a\u4e0a\u4e0b\u6587<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -iX POST &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Content-Type: application\/json&#8217; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n-d @- &lt;&lt;EOS<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:001&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 25.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\nEOS\u54cd\u5e94<br \/>\nHTTP\/2 201<br \/>\n\u65e5\u671f\uff1a2022\u5e749\u670818\u65e5 \u661f\u671f\u65e5 11:08:57 GMT<br \/>\n\u5185\u5bb9\u957f\u5ea6\uff1a0<br \/>\napigw-requestid\uff1aYpxbZgo0PHcEJcA=<br \/>\n\u53d8\u91cf\uff1a\u8d77\u6e90<br \/>\n\u53d8\u91cf\uff1a\u63a7\u5236\u8bbf\u95ee\u8bf7\u6c42\u65b9\u6cd5<br \/>\n\u53d8\u91cf\uff1a\u63a7\u5236\u8bbf\u95ee\u8bf7\u6c42\u5934<br \/>\n\u4f4d\u7f6e\uff1a\/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:001<br \/>\nx-content-type-options\uff1a\u65e0\u7f16\u8bd1\uff0c\u65e0\u55c5\u63a2<br \/>\nx-xss-protection\uff1a1\uff1b\u6a21\u5f0f=block<br \/>\n\u7f13\u5b58\u63a7\u5236\uff1a\u65e0\u7f13\u5b58\uff0c\u65e0\u5b58\u50a8\uff0c\u6700\u5927\u5e74\u9f84=0\uff0c\u5fc5\u987b\u91cd\u65b0\u9a8c\u8bc1<br \/>\n\u7279\u6743\uff1a\u65e0\u7279\u6743<br \/>\n\u8fc7\u671f\u65f6\u95f4\uff1a0<br \/>\nx-frame-options\uff1a\u62d2\u7edd<\/p>\n<\/details>\n<details>\u5728\u8bf7\u6c42\u4f53\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -iX POST &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Content-Type: application\/ld+json&#8217; \\<br \/>\n-d @- &lt;&lt;EOS<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 28.4,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n},<br \/>\n&#8220;@context&#8221;: [<br \/>\n&#8220;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&#8221;<br \/>\n]<br \/>\n}<br \/>\nEOS\u54cd\u5e94<br \/>\nHTTP\/2 201<br \/>\n\u65e5\u671f: Sun, 18 Sep 2022 11:10:53 GMT<br \/>\n\u5185\u5bb9\u957f\u5ea6: 0<br \/>\napigw-requestid: YpxtrhRkPHcEMCw=<br \/>\n\u53d8\u5316: Origin<br \/>\n\u53d8\u5316: Access-Control-Request-Method<br \/>\n\u53d8\u5316: Access-Control-Request-Headers<br \/>\n\u4f4d\u7f6e: \/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:002<br \/>\nx-content-type-options: nosniff<br \/>\nx-xss-protection: 1; mode=block<br \/>\n\u7f13\u5b58\u63a7\u5236: no-cache, no-store, max-age=0, must-revalidate<br \/>\npragma: no-cache<br \/>\n\u8fc7\u671f: 0<br \/>\nx-frame-options: DENY<\/p>\n<\/details>\n<h2>\u83b7\u53d6\u5b9e\u4f53\u5217\u8868<\/h2>\n<p>\u901a\u8fc7\u4f7f\u7528\/ngsi-ld\/v1\/entities\/\u8fdb\u884cGET\u8bf7\u6c42\uff0c\u53ef\u4ee5\u83b7\u53d6\u5230\u5b9e\u4f53\u7684\u5217\u8868\u3002\u5982\u679c\u6ca1\u6709\u5728\u539f\u6765\u7684Link\u6807\u5934\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587\uff0c\u5728\u5c5e\u6027\u540d\u79f0\u4e2d\u4f3c\u4e4e\u4f1a\u5305\u542b\u4e0a\u4e0b\u6587\u3002<\/p>\n<details>\u7528\u4e2d\u56fd\u76d7\u7528Link\u5934\u6307\u5b9a\u4e0a\u4e0b\u6587\u7684\u65b9\u6cd5<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n-d type=TempSensor \\<br \/>\n| jq .\u54cd\u5e94<br \/>\n[<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:001&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 25.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n},<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 28.4,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/p>\n<\/details>\n<details>\u4f7f\u7528curl\u547d\u4ee4\u5728\u8bf7\u6c42\u4f53\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587\uff1a<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8220;Content-Type: application\/ld+json&#8221; \\<br \/>\n-d type=TempSensor \\<br \/>\n| jq .[<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:001&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 25.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n},<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 28.4,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/p>\n<\/details>\n<h2>\u4f7f\u7528ID\u53c2\u6570\u83b7\u53d6\u5b9e\u4f53<\/h2>\n<p>\u4e0eNGSI v2\u7c7b\u4f3c\uff0c\u901a\u8fc7GET\u8bf7\u6c42\/ngsi-ld\/v1\/entities\/\/\u53ef\u4ee5\u83b7\u53d6\u5230\u5bf9\u5e94\u7684\u5b9e\u4f53\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4e0d\u9700\u8981\u901a\u8fc7\u67e5\u8be2\u5b57\u7b26\u4e32\u6765\u6307\u5b9a\u7c7b\u578b\u3002<\/p>\n<details>\u4f7f\u7528Link\u6807\u5934\u6307\u5b9a\u4e0a\u4e0b\u6587\uff1a<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:001&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n| jq.\u54cd\u5e94\uff1a<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:001&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 25.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<\/p>\n<\/details>\n<details>\u5728\u8bf7\u6c42\u4f53\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:002&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8220;Content-Type: application\/ld+json&#8221; \\<br \/>\n| jq .\u8fd4\u56de\u7ed3\u679c<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;https:\/\/smart-data-models.github.io\/data-models\/terms.jsonld#\/definitions\/temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 28.4,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<\/p>\n<\/details>\n<h2>\u5bf9Entity\u8fdb\u884c\u7b5b\u9009<\/h2>\n<p>\u60a8\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528q\u53c2\u6570\u5728QueryString\u4e2d\u7f16\u5199\u8fc7\u6ee4\u6761\u4ef6\u6765\u8fc7\u6ee4\u5b9e\u4f53\u3002<\/p>\n<details>\u5728Link\u5934\u4fe1\u606f\u4e2d\u6307\u5b9a\u4e0a\u4e0b\u6587\u3002<br \/>\nnmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n-d type=TempSensor \\<br \/>\n-d q=temperature==26..30 \\<br \/>\n| jq .\u54cd\u5e94<br \/>\n[<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 28.4,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/p>\n<\/details>\n<h2>\u4ec5\u83b7\u53d6\u7279\u5b9a\u5c5e\u6027<\/h2>\n<p>\u5982\u679c\u5728Query String\u4e2d\u6307\u5b9a\u4e86attrs\u53c2\u6570\uff0c\u5219\u53ea\u80fd\u83b7\u53d6\u6307\u5b9a\u5c5e\u6027\u3002<\/p>\n<details>\u4f7f\u7528curl\u547d\u4ee4\u4ece\u6307\u5b9a\u7684URL\u83b7\u53d6\u5e26\u6709\u8bbe\u7f6e\u5934\u90e8\u7684\u6570\u636e\uff0c\u8fd9\u91cc\u4f7f\u7528\u4e86Link\u5934\u90e8\u6307\u5b9a\u4e86\u6587\u6863\u7684\u4e0a\u4e0b\u6587- JSON LD\u3002<br \/>\n\u56de\u5e94\u5305\u542b\u4e86\u4e24\u4e2aTempSensor\u7684\u5b9e\u4f53\uff0c\u5305\u542bid\u3001\u7c7b\u578b\u548c\u6e29\u5ea6\u5c5e\u6027\u3002<\/details>\n<h2>\u66f4\u65b0\u5b9e\u4f53<\/h2>\n<p>\u901a\u8fc7\u5728\u8bf7\u6c42\u7684\u4e3b\u4f53\u4e2d\u6307\u5b9a\u9700\u8981\u66f4\u65b0\u7684\u5c5e\u6027\uff0c\u5e76\u5bf9\/ngsi-ld\/v1\/entities\/\/\u53d1\u8d77PATCH\u8bf7\u6c42\uff0c\u53ef\u4ee5\u66f4\u65b0\u8be5\u5c5e\u6027\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7531\u4e8e\u8bf7\u6c42\u4e3b\u4f53\u4e2d\u4ec5\u5217\u51fa\u9700\u8981\u66f4\u65b0\u7684\u5c5e\u6027\uff0c\u56e0\u6b64\u5fc5\u987b\u901a\u8fc7&#8221;Link&#8221;\u5934\u6765\u6307\u5b9a\u4e0a\u4e0b\u6587\u3002<\/p>\n<details>\u5728Link\u5934\u90e8\u6307\u5b9a\u4e0a\u4e0b\u6587\u3002nmatsui@:aws-stf-core-scorpio (main =)$ curl -iX PATCH &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:002\/attrs&#8221;<br \/>\n-H &#8220;Authorization: $TOKEN&#8221;<br \/>\n-H &#8216;Content-Type: application\/json&#8217;<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217;<br \/>\n-d @- &lt;&lt;EOS<br \/>\n{<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 31.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\nEOS<\/p>\n<p>\u54cd\u5e94<br \/>\nHTTP\/2 204<br \/>\ndate: Sun, 18 Sep 2022 11:46:52 GMT<br \/>\napigw-requestid: Yp2-5jksvHcEMQA=<br \/>\nvary: Origin<br \/>\nvary: Access-Control-Request-Method<br \/>\nvary: Access-Control-Request-Headers<br \/>\nx-content-type-options: nosniff<br \/>\nx-xss-protection: 1; mode=block<br \/>\ncache-control: no-cache, no-store, max-age=0, must-revalidate<br \/>\npragma: no-cache<br \/>\nexpires: 0<br \/>\nx-frame-options: DENY<\/p>\n<\/details>\n<details>\u786e\u8ba4\u66f4\u65b0\u540e\u7684\u5b9e\u4f53\u3002nmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; -H &#8220;Authorization: $TOKEN&#8221; -H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; -d type=TempSensor | jq .\u56de\u5e94<br \/>\n[<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:001&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 25.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n},<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 31.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/p>\n<\/details>\n<h2>\u5220\u9664\u5b9e\u4f53<\/h2>\n<p>\u60a8\u53ef\u4ee5\u901a\u8fc7\u6700\u540e\u4e00\u4e2a\u6b65\u9aa4\uff0c\u5373\u5bf9\/ngsi-ld\/v1\/entities\/\/\u53d1\u9001DELETE\u8bf7\u6c42\uff0c\u6765\u5220\u9664\u8be5\u5b9e\u4f53\u3002<\/p>\n<details>\u4f7f\u7528curl\u547d\u4ee4\u65f6\uff0c\u901a\u8fc7Link\u6807\u5934\u6307\u5b9a\u4e0a\u4e0b\u6587\u5982\u4e0b\uff1anmatsui@:aws-stf-core-scorpio (main =)$ curl -iX DELETE &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/urn:ngsi-ld:TempSensor:001&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217;<\/p>\n<p>\u54cd\u5e94\uff1a<br \/>\nHTTP\/2 204<br \/>\ndate: Sun, 18 Sep 2022 12:00:51 GMT<br \/>\napigw-requestid: Yp5CGjrfvHcEPWA=<br \/>\nvary: Origin<br \/>\nvary: Access-Control-Request-Method<br \/>\nvary: Access-Control-Request-Headers<br \/>\nx-content-type-options: nosniff<br \/>\nx-xss-protection: 1; mode=block<br \/>\ncache-control: no-cache, no-store, max-age=0, must-revalidate<br \/>\npragma: no-cache<br \/>\nexpires: 0<br \/>\nx-frame-options: DENY<\/p>\n<\/details>\n<details>\u786e\u8ba4\u66f4\u65b0\u540e\u7684Entitynmatsui@:aws-stf-core-scorpio (main =)$ curl -sSG &#8220;$ENDPOINT\/ngsi-ld\/v1\/entities\/&#8221; \\<br \/>\n-H &#8220;Authorization: $TOKEN&#8221; \\<br \/>\n-H &#8216;Link: &lt;https:\/\/raw.githubusercontent.com\/smart-data-models\/data-models\/master\/context.jsonld&gt;; rel=&#8221;http:\/\/www.w3.org\/ns\/json-ld#context&#8221;; type=&#8221;application\/ld+json&#8217; \\<br \/>\n-d type=TempSensor \\<br \/>\n| jq .<\/p>\n<p>\u56de\u590d\uff1a<br \/>\n[<br \/>\n{<br \/>\n&#8220;id&#8221;: &#8220;urn:ngsi-ld:TempSensor:002&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TempSensor&#8221;,<br \/>\n&#8220;category&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: &#8220;sensor&#8221;<br \/>\n},<br \/>\n&#8220;temperature&#8221;: {<br \/>\n&#8220;type&#8221;: &#8220;Property&#8221;,<br \/>\n&#8220;value&#8221;: 31.2,<br \/>\n&#8220;unitCode&#8221;: &#8220;CEL&#8221;<br \/>\n}<br \/>\n}<br \/>\n]<\/p>\n<\/details>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u5229\u7528AWS STF\uff08\u667a\u6167\u9818\u57df\u6846\u67b6\uff09\uff0c\u53ef\u4ee5\u8f15\u9b06\u5730\u5728AWS\u4e0a\u69cb\u5efaFIWARE NGSI-LD\u4e0a\u4e0b\u6587\u4ee3\u7406\uff08Scorpio\uff09\u3002<br \/>\n\u7136\u800c\uff0c\u5982\u679c\u7528\u4f5cNGSI-LD\u7684\u9a57\u8b49\u74b0\u5883\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u5982\u679c\u7528\u4f5c\u751f\u7522\u74b0\u5883\uff0c\u9700\u8981\u6ce8\u610f\u4ee5\u4e0b\u5e7e\u9ede\u3002\u5efa\u8b70\u57fa\u65bcAWS STF\uff0c\u5275\u5efa\u7b26\u5408\u81ea\u8eab\u60c5\u6cc1\u7684CDK\u5806\u758a\u3002<\/p>\n<h2>\u8bf7\u6c42\u8ba4\u8bc1\u548c\u6388\u6743<\/h2>\n<p>\u5982\u679c\u5c06AWS STF\u7528\u4f5c\u6570\u636e\u534f\u4f5c\u57fa\u7840\u8bbe\u65bd\uff0c\u5c31\u9700\u8981\u4e3a\u6bcf\u4e2aHTTP\u65b9\u6cd5\u548c\u8def\u5f84\u8bbe\u7f6e\u9002\u5f53\u7684\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\u3002\u5e76\u4e14\uff0c\u9700\u8981\u9009\u62e9\u9002\u5f53\u7684\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\u4e2d\u95f4\u4ef6\uff0c\u5305\u62ec\u7ba1\u7406\u6388\u6743\u7528\u6237\u7684\u64cd\u4f5c\u8d1f\u62c5\uff0c\u5e76\u5bf9CDK\u5806\u6808\u8fdb\u884c\u4fee\u6539\uff0c\u4ee5\u4e0eAmazon API Gateway\u8fdb\u884c\u534f\u4f5c\u3002<\/p>\n<h2>\u6258\u7ba1\u670d\u52a1\u8d44\u6e90\u914d\u7f6e<\/h2>\n<p>STF Core\u7684CDK\u5806\u6808\u5df2\u7ecf\u914d\u7f6e\u4e86\u4e0eAWS Aurora Serverless\u548c\u8f83\u5c0f\u7684Amazon Managed Streaming for Apache Kafka\u7684\u96c6\u6210\u3002\u8fd9\u5bf9\u4e8e\u9a8c\u8bc1\u76ee\u7684\u662f\u5f88\u597d\u7684\uff0c\u4f46\u5982\u679c\u7528\u4f5c\u751f\u4ea7\u73af\u5883\uff0c\u5219\u6709\u53ef\u80fd\u6210\u4e3a\u6027\u80fd\u74f6\u9888\u3002\u8bf7\u5b9e\u65f6\u76d1\u63a7\u548c\u9884\u6d4b\u5b9e\u9645\u8bf7\u6c42\u7684\u9891\u7387\u4ee5\u53ca\u9884\u671f\u7684\u8bf7\u6c42\uff0c\u5e76\u76f8\u5e94\u8c03\u6574\u5408\u9002\u7684\u8d44\u6e90\u5927\u5c0f\u3002<\/p>\n<h2>\u4e0e\u5176\u4ed6FIWARE\u7ec4\u4ef6\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u8fdb\u884c\u534f\u4f5c<\/h2>\n<p>\u5728\u5b9e\u9645\u6784\u5efa\u6570\u636e\u534f\u4f5c\u57fa\u7840\u8bbe\u65bd\u65f6\uff0c\u9664\u4e86\u7ecf\u7eaa\u4eba\u529f\u80fd\u4e4b\u5916\uff0c\u8fd8\u9700\u8981\u4e0e\u5176\u4ed6\u529f\u80fd\u8fdb\u884c\u534f\u4f5c\u3002\u4f8b\u5982\uff0c\u57fa\u4e8e\u65f6\u95f4\u5e8f\u5217\u8bb0\u5f55\u5b9e\u4f53\u66f4\u65b0\u7684\u65f6\u95f4\u5e8f\u5217\u6570\u636e\u5e93\u7ec4\u4ef6\uff0c\u7528\u4e8e\u53ef\u89c6\u5316\u534f\u4f5c\u6570\u636e\u72b6\u6001\u7684BI\u7ec4\u4ef6\uff0c\u6216\u8005\u6839\u636e\u7279\u5b9a\u7528\u9014\u81ea\u884c\u5f00\u53d1\u7684\u7279\u6b8a\u7ec4\u4ef6\u7b49\u3002\u8fd9\u4e9b\u534f\u4f5c\u9700\u8981\u96c6\u6210\u5230CDK\u5806\u6808\u4e2d\u3002<\/p>\n<h1>\u9996\u5148&#8230;<\/h1>\n<p>\u5728\u6570\u5b57\u5316\u7530\u56ed\u57ce\u5e02\u56fd\u5bb6\u6784\u60f3\u4e2d\uff0c\u9700\u8981\u4e00\u4e2a\u5f00\u653e\u7684\u6570\u636e\u534f\u4f5c\u57fa\u7840\u8bbe\u65bd\uff0c\u636e\u8bf4\u9700\u8981\u57fa\u4e8eFIWARE orion\u7684\u4ee3\u7406\u529f\u80fd\u3002\u8fd9\u4e2aFIWARE orion\u548cAWS STF\u6240\u91c7\u7528\u7684scorpio\uff0c\u867d\u7136\u90fd\u662f\u57fa\u4e8eFIWARE\u7684Context Broker\u7ec4\u4ef6\uff0c\u4f46orion\u5904\u7406NGSI v2\u7684\u6570\u636e\u6a21\u578b\uff0c\u800cscorpio\u5904\u7406NGSI-LD\uff0c\u5b83\u4eec\u4e4b\u95f4\u6ca1\u6709\u517c\u5bb9\u6027\u3002\u5c06\u6765\u5728\u6570\u636e\u534f\u4f5c\u57fa\u7840\u8bbe\u65bd\u4e4b\u95f4\u8fdb\u884c\u6570\u636e\u4ea4\u6362\u65f6\uff0c\u53ef\u80fd\u4f1a\u9762\u4e34\u95ee\u9898\u3002<\/p>\n<section>\u4ee5\u4e0b\u662f\u5bf9\u6587\u6863\u7684\u4e2d\u6587\u7ffb\u8bd1\u9009\u9879\uff1a1. \u521b\u5efaAmazon MSK\u7fa4\u96c6\uff0c\u8bf7\u53c2\u9605\u94fe\u63a5\uff1a<br \/>\nhttps:\/\/docs.aws.amazon.com\/msk\/latest\/developerguide\/msk-create-cluster.html<\/p>\n<p>2. ScorpioBroker\u5b89\u88c5\u6307\u5357\uff0c\u8bf7\u53c2\u9605\u94fe\u63a5\uff1a<br \/>\nhttps:\/\/github.com\/ScorpioBroker\/ScorpioBroker\/blob\/development\/docs\/en\/source\/installationGuide.rst<\/p>\n<p>3. \u672a\u6765\u7684\u6570\u5b57\u7535\u5316\u653f\u5e9c\u670d\u52a1\uff1a<br \/>\nhttps:\/\/www.chisou.go.jp\/sousei\/about\/mirai\/pdf\/digitaldenenseidoyoukou.pdf<\/p>\n<p>4. \u7535\u529b\u4f9b\u5e94\u5408\u540c\u8bc4\u4ef7\u62a5\u544a\uff1a<br \/>\nhttps:\/\/www.chisou.go.jp\/sousei\/about\/mirai\/pdf\/denenkouhukin_jissou_type23_hyoka.pdf<\/p>\n<p>5. \u7535\u529b\u4f9b\u5e94\u5408\u540c\u95ee\u7b541-3\uff1a<br \/>\nhttps:\/\/www.chisou.go.jp\/sousei\/about\/mirai\/pdf\/denenkouhukin_jissou_type23_qa1-3.pdf<\/p>\n<p>6. \u6570\u5b57\u653f\u5e9c\u653f\u7b56\uff0c\u9884\u7b97\u548c\u8865\u8d34\uff1a<br \/>\nhttps:\/\/www.digital.go.jp\/assets\/contents\/node\/basic_page\/field_ref_resources\/82a1ea56-128f-4cf6-bbd5-9ef6d4b7bafc\/40d603f5\/20220812_policies_budget_subsidies_02.pdf<\/p>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>AWS\u57282022\u5e747\u670812\u65e5\u5ba3\u5e03\uff0c\u4ed6\u4eec\u5c06\u52a0\u5165FIWARE\u57fa\u91d1\u4f1a\uff0c\u5e76\u5728\u667a\u6167\u57ce\u5e02\u5f00\u53d1\u65b9\u9762\u5c55\u5f00\u5408\u4f5c\u3002\u8fd9\u4e2a\u6d88\u606f\u4e5f\u572820 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-47143","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728aws\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86fiware\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\" \/>\n<meta property=\"og:description\" content=\"AWS\u57282022\u5e747\u670812\u65e5\u5ba3\u5e03\uff0c\u4ed6\u4eec\u5c06\u52a0\u5165FIWARE\u57fa\u91d1\u4f1a\uff0c\u5e76\u5728\u667a\u6167\u57ce\u5e02\u5f00\u53d1\u65b9\u9762\u5c55\u5f00\u5408\u4f5c\u3002\u8fd9\u4e2a\u6d88\u606f\u4e5f\u572820 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728aws\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86fiware\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T07:27:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T08:02:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7ce3913a08637a69e1ce\/3-0.png%3Fraw%3Dtrue\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/\",\"name\":\"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-08T07:27:51+00:00\",\"dateModified\":\"2024-05-04T08:02:12+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728aws\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86fiware\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09","og_description":"AWS\u57282022\u5e747\u670812\u65e5\u5ba3\u5e03\uff0c\u4ed6\u4eec\u5c06\u52a0\u5165FIWARE\u57fa\u91d1\u4f1a\uff0c\u5e76\u5728\u667a\u6167\u57ce\u5e02\u5f00\u53d1\u65b9\u9762\u5c55\u5f00\u5408\u4f5c\u3002\u8fd9\u4e2a\u6d88\u606f\u4e5f\u572820 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728aws\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86fiware\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-08T07:27:51+00:00","article_modified_time":"2024-05-04T08:02:12+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7ce3913a08637a69e1ce\/3-0.png%3Fraw%3Dtrue"}],"author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/","name":"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-08T07:27:51+00:00","dateModified":"2024-05-04T08:02:12+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u5728AWS\u667a\u80fd\u9886\u57df\u6846\u67b6\u4e2d\u5c1d\u8bd5\u4e86FIWARE\uff08\u7b2c1\u90e8\u5206\uff1a\u4ee3\u7406\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8aws%e6%99%ba%e8%83%bd%e9%a2%86%e5%9f%9f%e6%a1%86%e6%9e%b6%e4%b8%ad%e5%b0%9d%e8%af%95%e4%ba%86fiware%ef%bc%88%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a%e4%bb%a3%e7%90%86%ef%bc%89%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=47143"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47143\/revisions"}],"predecessor-version":[{"id":99299,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/47143\/revisions\/99299"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=47143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=47143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=47143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}